主题:[原创]jndi数据库连接池
我通过普通连接可以正确连接上数据库,代码如下:
String dri = "com.mysql.jdbc.Driver";
String db = "jdbc:mysql://127.0.0.1:3306/bb?user=root&password=bb";
Connection conn = null;
try{
Class.forName(dri).newInstance();
conn = DriverManager.getConnection(db);
但通过JNDI配置连接就出现下面
问题提示:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
环境是Tomcat5.5+MYSQL5.0
配置是(加粗字体):
1, C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\server.xml
<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/mysql" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/mysql">
<parameter>
<name>url</name>
<value>jdbc:mysql://127.0.0.1:3306/bb?autoReconnection=true</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>5</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>50</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>3000</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>bb</value>
</parameter>
</ResourceParams>
<parameter>
<name>factory</name>
<!--<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>-->
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
</GlobalNamingResources>
2.D:\wei\WEB-INF\web.xml
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
3. C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost\wei.xml:
<Context path="/wei" docBase="D:/wei" reloadable="true" privileged="true" debug="0">
<ResourceLink name="jdbc/mysql" global="jdbc/mysql" type="javax.sql.DataSource"/>
<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/mysql" >
<parameter>
<name>url</name>
<value>jdbc:mysql://127.0.0.1:3306/bb?autoReconnection=true</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>5</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>50</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>3000</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>bb</value>
</parameter>
</ResourceParams>
<parameter>
<name>factory</name>
<!--<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>-->
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
</Context>
4代码如下
Connection conn = null;
try{
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mysql");
conn = ds.getConnection();
}
String dri = "com.mysql.jdbc.Driver";
String db = "jdbc:mysql://127.0.0.1:3306/bb?user=root&password=bb";
Connection conn = null;
try{
Class.forName(dri).newInstance();
conn = DriverManager.getConnection(db);
但通过JNDI配置连接就出现下面
问题提示:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
环境是Tomcat5.5+MYSQL5.0
配置是(加粗字体):
1, C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\server.xml
<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/mysql" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/mysql">
<parameter>
<name>url</name>
<value>jdbc:mysql://127.0.0.1:3306/bb?autoReconnection=true</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>5</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>50</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>3000</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>bb</value>
</parameter>
</ResourceParams>
<parameter>
<name>factory</name>
<!--<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>-->
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
</GlobalNamingResources>
2.D:\wei\WEB-INF\web.xml
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
3. C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost\wei.xml:
<Context path="/wei" docBase="D:/wei" reloadable="true" privileged="true" debug="0">
<ResourceLink name="jdbc/mysql" global="jdbc/mysql" type="javax.sql.DataSource"/>
<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/mysql" >
<parameter>
<name>url</name>
<value>jdbc:mysql://127.0.0.1:3306/bb?autoReconnection=true</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>5</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>50</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>3000</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>bb</value>
</parameter>
</ResourceParams>
<parameter>
<name>factory</name>
<!--<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>-->
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
</Context>
4代码如下
Connection conn = null;
try{
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mysql");
conn = ds.getConnection();
}