环境: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>以上。