简体   繁体   English

JDBC tomcat连接池不起作用

[英]JDBC tomcat connection pool is not working

Apache tomcat log Apache tomcat日志

Jul 19, 2014 9:31:31 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [FrontController] in context with path [/GroupFound] threw exception java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp.BasicDataSource cannot be cast to org.apache.tomcat.jdbc.pool.DataSource at models.bean.Customer.act(Customer.java:32) at controller.FrontController.processRequest(FrontController.java:40) at controller.FrontController.doGet(FrontController.java:61) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: 2014年7月19日9:31:31 PM org.apache.catalina.core.StandardWrapperValve在路径为[/ GroupFound]的上下文中为Servlet [FrontController]调用SEVERE:Servlet.service()引发异常java.lang.ClassCastException:org。 apache.tomcat.dbcp.dbcp.BasicDataSource无法转换为controller.FrontController.processRequest(FrontController.java :)上models.bean.Customer.act(Customer.java:32)上的org.apache.tomcat.jdbc.pool.DataSource 40)在controller.FrontController.doGet(FrontController.java:61)在javax.servlet.http.HttpServlet.service(HttpServlet.java:621)在javax.servlet.http.HttpServlet.service(HttpServlet.java:722)在org.netbeans.modules.web.monitor.server上的org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)上的org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)。 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java处的MonitorFilter.doFilter(MonitorFilter.java:393) 243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) at org.apache.tomcat.util.net.JIoEndpoint$S 243)在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)在org.apache.catalina.core.StandardContextValve org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)的org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)的.invoke(StandardContextValve.java:169)。在org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)处的apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve。 java:118)在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)在org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:565)在org.apache.tomcat.util.net.JIoEndpoint $ S ocketProcessor.run(JIoEndpoint.java:307) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Java上的java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886)上的ocketProcessor.run(JIoEndpoint.java:307)在Java上的java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908) .lang.Thread.run(Thread.java:662)

Error 错误

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452) at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371) at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) at models.bean.Customer.act(Customer.java:33) at controller.FrontController.processRequest(FrontController.java:40) at controller.FrontController.doGet(FrontController.java:61) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) at org.apache.catalina.co org.apache.tomcat.dbcp.dbcp.SQLNestedException:无法在组织org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)上为连接URL'null'创建类”的JDBC驱动程序。位于org.apache.tomcat.dbcp.dbcp.Bacp.BasicDataSource.getConnection(BasicDataSource.java:1044)处的apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)控制器处的Java:33)。控制器处的FrontController.processRequest(FrontController.java:40)(javax.servlet.http.HttpServlet.service(HttpServlet.java:621)处的Controller.FrontController.doGet(FrontController.java:61))。 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)上的servlet.http.HttpServlet.service(HttpServlet.java:722)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 210),位于org.apache.catalina.co的org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) re.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process org.apache.catalina.core上的re.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)(org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)的org.apache.catalina.authenticator.AuthenticatorBase.invoke(StandardContextValve.java:169)在org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:168)在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)在org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)在org.apache。 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)上的catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java: 999)在org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:565) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.NullPointerException at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(JdbcOdbcDriver.java:507) at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(JdbcOdbcDriver.java:476) at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(JdbcOdbcDriver.java:307) at java.sql.DriverManager.getDriver(DriverManager.java:253) at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437) ... 26 more (AbstractProtocol.java:565)在org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:307)在java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886)在java.lang.Thread.run(Thread.java:662)上的java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908)原因:sun.jdbc.odbc.JdbcOdbcDriver处的java.lang.NullPointerException。 Sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(JdbcOdbcDriver.java:307)上的sun.jdbc.odbc.JdbcOdbcDriver.knownURL(JdbcOdbcDriver.java:476)上的getProtocol(JdbcOdbcDriver.java:507)在Java.sql。 (DriverManager.java:253)位于org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)...还有26个

context.xml changed from META-INF folder. 从META-INF文件夹更改了context.xml catalina-home/conf/Catalina/localhost/[projectname].xml also have been changed while changing META-INF copy. 在更改META-INF副本时,catalina-home / conf / Catalina / localhost / [项目名称] .xml也已更改。

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/GroupFound">
    <Resource auth="Container" 
              defaultReadOnly="false" 
              driverClassName="com.mysql.jdbc.jdbc2.optional" 
              factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
              initialSize="0" 
              jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer" 
              jmxEnabled="true" 
              logAbandoned="true" 
              maxActive="300" maxIdle="50"
              maxWait="10000" 
              minEvictableIdleTimeMillis="300000"
              minIdle="30" 
              name="jdbc/testcp"
              password="" 
              removeAbandoned="true"
              removeAbandonedTimeout="60" 
              testOnBorrow="true"
              testOnReturn="false" 
              testWhileIdle="true" 
              timeBetweenEvictionRunsMillis="30000"
              type="javax.sql.DataSource" 
              url="jdbc:mysql://localhost:3306/test" 
              username="root"
              validationInterval="30000" 
              validationQuery="SELECT 1"/>
</Context>

Web.xml changed from application context (netbeans IDE) Web.xml从应用程序上下文更改(netbeans IDE)

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <servlet>
        <servlet-name>FrontController</servlet-name>
        <servlet-class>controller.FrontController</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>FrontController</servlet-name>
        <url-pattern>/index</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>

    <resource-ref>
        <description>DB Connection</description>
        <res-ref-name>/jdbc/testcp</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
</web-app>

Have been trying to fix it from hours. 一直试图从几个小时内修复它。 Searched google and similar issues with no success. 搜索google和类似问题均未成功。 I am exhausted. 我累死。 How to fix it? 如何解决? I just want to see DataSource working. 我只想看到DataSource工作。

Details JDK 6.1 netbeans 7.2 tomcat 7.0.27 详细信息 JDK 6.1 netbeans 7.2 tomcat 7.0.27

This appears to be the best guide that I can find: 这似乎是我可以找到的最佳指南:

http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html

A quick test would be to put it here: 一个快速的测试是将其放在这里:

$CATALINA_BASE/conf/context.xml $ CATALINA_BASE / conf / context.xml

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM