记录学习Tomcat JSDI数据源技术的问题

来源:互联网 发布:peterson算法 编辑:程序博客网 时间:2024/06/01 07:28

我的记录是随机的,遇见啥就记录啥。

           今天学习Tomcat JSDI数据源技术只遇见了一个问题 就是报错:

Name jdbc is not bound in this Context :not find [jdbc]

  原因是在教学书上写时是建议在WEB工程目录下建立文件context.xml,并配置数据源信息。但是,按照书上的使用的话,就会报这个错。其实这个错误也很明显的提醒你是什么问题了,是找不到jdbc这个数据源,就可能是ctx.lookup("jdbc")的时候根本就找不到。经过网上找寻资料后,我最终还是选择了在Tomcat的目录下的conf/context.xml配置数据源信息,结果就成功了微笑。可能是我水平不到家的问题,不会使用在WEB工程目录下建立的文件context.xml .快哭了.接下来附上.java .xml.的代码.

.context.xml

<?xml version='1.0' encoding='utf-8'?><!--  Licensed to the Apache Software Foundation (ASF) under one or more  contributor license agreements.  See the NOTICE file distributed with  this work for additional information regarding copyright ownership.  The ASF licenses this file to You under the Apache License, Version 2.0  (the "License"); you may not use this file except in compliance with  the License.  You may obtain a copy of the License at      http://www.apache.org/licenses/LICENSE-2.0  Unless required by applicable law or agreed to in writing, software  distributed under the License is distributed on an "AS IS" BASIS,  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the specific language governing permissions and  limitations under the License.--><!-- The contents of this file will be loaded for each web application --><Context path="/MyServer" reloadable="true" crossContext="true">    <!-- Default set of monitored resources -->    <WatchedResource>WEB-INF/web.xml</WatchedResource>    <!-- Uncomment this to disable session persistence across Tomcat restarts -->    <!--    <Manager pathname="" />    -->    <!-- Uncomment this to enable Comet connection tacking (provides events         on session expiration as well as webapp lifecycle) -->    <!--    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />    --><Loader delegate="true" /><Resource name="JDBC"    type="javax.sql.DataSource"    auth="Container"    driverClassName="com.mysql.jdbc.Driver"    url="jdbc:mysql://127.0.0.1:3306/data"    username="root"    password="123"    maxActive="4"    maxIdle="2"    maxWait="6000" /></Context>

 

WEB工程目录下的,在<web-app>内
web.xml

 <resource-ref>  <description>DB</description>  <res-ref-name>JDBC</res-ref-name>  <res-type>javax.sql.DataSource</res-type>  <res-auth>Container</res-auth> </resource-ref>

 

.java

 public void getNewuser(String name){ //Tomcat JSDI数据源技术  Connection conn = null;     PreparedStatement pstmt = null;     DataSource ds= null;        String sql = "insert into user(ID,password,name,mark)value(?,?,?,?)";  String [] strs = name.split("[,]");System.out.print(name);System.out.print(strs[0]+strs[1]);System.out.print(strs[2]);   try {               InitialContext ctx=new InitialContext();       //暂时没找出context.xml在WENT-INF下的使用方法                        ds = (DataSource)ctx.lookup("java:comp/env/JDBC"); //暂时使用context.xml在Tomcat的conf下的使用方法     conn = ds.getConnection();     pstmt = conn.prepareStatement(sql);     pstmt.setInt(1, Integer.valueOf(strs[0]));     pstmt.setInt(2,Integer.valueOf(strs[1])); pstmt.setString(3,strs[2]); pstmt.setInt(4,0); pstmt.addBatch();  //批执行     int[] row = pstmt.executeBatch(); //批执行     if(row.length>0){   System.out.print("成功增了"+row.length+"条记录");   }  /*  Class.forName("com.mysql.jdbc.Driver");          String url = "jdbc:mysql://localhost:3306/data";          String username ="root";          String password = "123";                    Connection conn = DriverManager.getConnection(url,username,password);          PreparedStatement ps = conn.prepareStatement(sql);                      ps.setInt(1,Integer.valueOf(strs[0]));ps.setInt(2,Integer.valueOf(strs[1]));    ps.setString(3,strs[2]);    ps.setInt(4,0);                               ps.addBatch();                int[] row = ps.executeBatch();          if(row.length>0) {          System.out.print("成功增了"+row.length+"条记录");          }*/         pstmt.close();          conn.close();                   } catch(Exception e){            e.printStackTrace();            System.out.print("错误");           }//  return retList.toArray(new user[0])  }



 

0 0