这几天都在学习如何通过tomcat配置连接池,但一直不成功,运行的话,都是报“Name java: is not bound in this Context”这个错!
我的配置过程如下:
第一步:在tomcat的server.xml的</host>前添加如下代码 
        <Context path="/customermanage" docBase="customermanage" debug="0" reloadable="true">
            <Resource name="jdbc/customermanage" auth="Container" type="javax.sql.DataSource" />
   <ResourceParams name="jdbc/customermanage">
 <parameter>
     <name>factory</name>
     <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
     <name>maxActive</name>
              <value>100</value>
</parameter>
<parameter>
     <name>maxIdle</name>
     <value>30</value>
</parameter>
         <parameter>
     <name>maxWait</name>
     <value>10000</value>
</parameter>
<parameter>
     <name>username</name>
     <value>sa</value>
</parameter>
<parameter>
     <name>password</name>
     <value>sa</value>
</parameter>
<parameter>
     <name>driverClassName</name>
     <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
     <name>url</name>                                <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=customermanage</value>                                     
</parameter>
</ResourceParams>
  </Context>
第二步:在web.xml中添加如下代码:
<resource-ref> 
    <description>DB Connection</description>      
    <res-ref-name>jdbc/customermanage</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
         </resource-ref>
第三步:在应用程序中添加如下代码:
       ……
      try{
       Connection con=null;
       Statement stmt=null;
       ResultSet rs=null;
       //从数据源连接池取得连接    
       Context initContext = new InitialContext();
       Context envContext  = (Context)initContext.lookup("java:/comp/env");
       DataSource ds = (DataSource)envContext.lookup("jdbc/customermanage");
     ……
     }catch(Exception e){
        System.out.println(e.getMessage());
    }    ……
第四步:运行调试
       结果总是报“Name java: is not bound in this Context”这个错!
       不管我怎么调都没用了,找了好几个同事都没有分析出原因来!       哪个大仙能帮我?能告诉我可能是什么原因造成的!(环境:tomcat5.5;jdk1.6,myeclipse)

解决方案 »

  1.   

    tomcat里有配置连接池的文档,看看,还有就是程序的包可能会和tomcat重复,你看看吧
      

  2.   

    你把server.xml下的代码放到Context.xml下去试试看!
      

  3.   

    添加的地方和内容都不太对。只把<Resource>拷贝粘贴到server.xml下的<GlobalNamingResources>里。<Context>是在具体应用程序里才需要的,在tomcat下配置公共连接池不需要这个。
      

  4.   

    给你个例子参考一下吧
    <GlobalNamingResources>
        <!-- Test entry for demonstration purposes -->
        <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
        <!-- Editable user database that can also be used by
            UserDatabaseRealm to authenticate users -->
        <!-- 这个是默认就有的,不用管 -->
        <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase"
            description="User database that can be updated and saved"
            factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
            pathname="conf/tomcat-users.xml"/>    <!-- 你的连接在这里 -->
        <Resource name="jdbc/sample-pool" auth="Container" type="javax.sql.DataSource"
            factory="org.apache.commons.dbcp.BasicDataSourceFactory" username="myusername" password="mypassword"
            driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/sample-db?autoReconnect=true&amp;jdbcCompliantTruncation=false&amp;useUnicode=yes&amp;characterEncoding=UTF-8"
            maxWait="1000" removeAbandoned="true" maxActive="200" maxIdle="10"
            removeAbandonedTimeout="60" logAbandoned="true"/>
    </GlobalNamingResources>