这几天都在学习如何通过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)
我的配置过程如下:
第一步:在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)
<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&jdbcCompliantTruncation=false&useUnicode=yes&characterEncoding=UTF-8"
maxWait="1000" removeAbandoned="true" maxActive="200" maxIdle="10"
removeAbandonedTimeout="60" logAbandoned="true"/>
</GlobalNamingResources>