JDBC连接池的使用

环境:eclipse-jee-galileo-SR2-win32+apache-tomcat-6.0.18+jdk1.6.0_10+mysql-installer-community-5.6.11.0

context.xml

<Context>
    <Resource name="jdbc/strutsTest" 
		auth="Container" 
		type="javax.sql.DataSource"
		driverClassName="com.mysql.jdbc.Driver"
		url="jdbc:mysql://localhost:3306/StrutsTest"
		username="wang"
		password="123456"
		maxActive="100"
		maxIdle="30"
		maxWait="10000"/>
</Context>

web.xml

<resource-ref>
    <res-ref-name>jdbc/strutsTest</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
java
Context context = (Context) new InitialContext();
DataSource dataSource = (DataSource)context.lookup("java:comp/env/jdbc/strutsTest");

一直报出下面错误:

javax.servlet.ServletException: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
	org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
	org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1150)
	org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
	action.LoginAction.execute(LoginAction.java:43)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

java.lang.NullPointerException
	sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(Unknown Source)
	sun.jdbc.odbc.JdbcOdbcDriver.knownURL(Unknown Source)
	sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(Unknown Source)
	java.sql.DriverManager.getDriver(Unknown Source)
	org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1143)
	org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
	action.LoginAction.execute(LoginAction.java:43)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

解决了一天,在网上看了资料也乱七八糟的,有的在tomcat下配置web.xml,server.xml,context.xml,有的在工程里配置web.xml,context.xml

到底要怎么配搞的很混。

其实配置是有多个选择的,这里我是在工程里配置web.xml,context.xml的。

可是配完了,一直出现上面的错误,提示JNDI资源找不到。

在网上混迹了一天也没有解决网上也有不少出现这个问题的。晚上很意外的发现了一个问题,靠,路径错了。

原先两个文件的路径都配置在了/WebContent/WEB-INF下,其实错误就在这里。

正确的是:

web.xml路径在/WebContent/WEB-INF下,而

context.xml的路径应该在/WebContent/META-INF下。

或许问题就不经意的出来了,但是确是付出很大的精力和时间解决 ,在这个过程中可以学习到很多东西。

感谢网络上的前辈。

好了,问题终于解决了。

另外还有一点:

web.xml里没有配下面的内容也没有报错,在eclipse+tomcat下应该不是必须的吧,求解中...

<resource-ref>
    <res-ref-name>jdbc/strutsTest</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
以上。


你可能感兴趣的:(连接池)