Java Tomcat 7.0连接池-jdbc驱动程序异常

Java Tomcat 7.0连接池-jdbc驱动程序异常,java,mysql,maven,tomcat,jdbc,Java,Mysql,Maven,Tomcat,Jdbc,我想在我的Tomcat服务器上实现连接池。这是我的context.xml文件(位于WebContent/META-INF/context.xml下): <Context path="/evappserver" reloadable="true"> <Resource name="jdbc/evapp" auth="Container" type="javax.sql.DataSource"

我想在我的Tomcat服务器上实现连接池。这是我的context.xml文件(位于
WebContent/META-INF/context.xml
下):

<Context path="/evappserver" reloadable="true">
    <Resource
          name="jdbc/evapp"
          auth="Container"
          type="javax.sql.DataSource"
          factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
          initialSize="34"
          maxActive="377"
          maxIdle="233"
          minIdle="89"
          timeBetweenEvictionRunsMillis="34000"
          minEvictableIdleTimeMillis="55000"
          validationQuery="SELECT 1"
          validationInterval="34"
          testOnBorrow="true"
          removeAbandoned="true"
          removeAbandonedTimeout="55"
          username="root"
          password=""
          driverClassName="com.mysql.jdbc.Driver"
          url="jdbc:mysql://localhost:3306/evapp?allowMultiQueries=true"
     />
</Context> 
以下是引发异常的java代码:

    Context initContext  = new InitialContext();
    Context envContext  = (Context) initContext.lookup("java:/comp/env");
    dataSource = (DataSource) envContext.lookup("jdbc/evapp"); //here is the exception
May 13, 2014 10:39:58 AM org.apache.naming.NamingContext lookup
WARNING: Unexpected exception resolving reference
java.sql.SQLException: com.mysql.jdbc.Driver
    at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254)
    at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:702)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:634)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:488)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116)
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103)
    at org.apache.tomcat.jdbc.pool.DataSourceFactory.createDataSource(DataSourceFactory.java:539)
    at org.apache.tomcat.jdbc.pool.DataSourceFactory.getObjectInstance(DataSourceFactory.java:237)
    at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:143)
    at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:843)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:154)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:831)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:168)
    at com.evappserver.dblayer.DBType.<init>(DBType.java:62)
    at com.evappserver.dblayer.MySqlDB.<init>(MySqlDB.java:16)
    at com.evappserver.logiclayer.BaseLogic.getMainDbConnection(BaseLogic.java:19)
    at com.evappserver.logiclayer.PasswordLoginLogic.doLogin(PasswordLoginLogic.java:27)
    at com.evappserver.servlets.PasswordLoginServlet.doGet(PasswordLoginServlet.java:37)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:266)
    at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:246)
    ... 38 more
例外情况如下:

    Context initContext  = new InitialContext();
    Context envContext  = (Context) initContext.lookup("java:/comp/env");
    dataSource = (DataSource) envContext.lookup("jdbc/evapp"); //here is the exception
May 13, 2014 10:39:58 AM org.apache.naming.NamingContext lookup
WARNING: Unexpected exception resolving reference
java.sql.SQLException: com.mysql.jdbc.Driver
    at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254)
    at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:702)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:634)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:488)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116)
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103)
    at org.apache.tomcat.jdbc.pool.DataSourceFactory.createDataSource(DataSourceFactory.java:539)
    at org.apache.tomcat.jdbc.pool.DataSourceFactory.getObjectInstance(DataSourceFactory.java:237)
    at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:143)
    at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:843)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:154)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:831)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:168)
    at com.evappserver.dblayer.DBType.<init>(DBType.java:62)
    at com.evappserver.dblayer.MySqlDB.<init>(MySqlDB.java:16)
    at com.evappserver.logiclayer.BaseLogic.getMainDbConnection(BaseLogic.java:19)
    at com.evappserver.logiclayer.PasswordLoginLogic.doLogin(PasswordLoginLogic.java:27)
    at com.evappserver.servlets.PasswordLoginServlet.doGet(PasswordLoginServlet.java:37)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:266)
    at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:246)
    ... 38 more
2014年5月13日上午10:39:58 org.apache.naming.NamingContext查找
警告:意外的异常解析引用
java.sql.SQLException:com.mysql.jdbc.Driver
位于org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254)
位于org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
位于org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:702)
位于org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:634)
位于org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:488)
位于org.apache.tomcat.jdbc.pool.ConnectionPool.(ConnectionPool.java:144)
位于org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116)
位于org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103)
位于org.apache.tomcat.jdbc.pool.DataSourceFactory.createDataSource(DataSourceFactory.java:539)
位于org.apache.tomcat.jdbc.pool.DataSourceFactory.getObjectInstance(DataSourceFactory.java:237)
位于org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:143)
位于javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
位于org.apache.naming.NamingContext.lookup(NamingContext.java:843)
位于org.apache.naming.NamingContext.lookup(NamingContext.java:154)
位于org.apache.naming.NamingContext.lookup(NamingContext.java:831)
位于org.apache.naming.NamingContext.lookup(NamingContext.java:168)
位于com.evappserver.dblayer.DBType.(DBType.java:62)
位于com.evappserver.dblayer.MySqlDB.(MySqlDB.java:16)
位于com.evappserver.logiclayer.BaseLogic.getMainDbConnection(BaseLogic.java:19)
位于com.evappserver.logiclayer.PasswordLoginLogic.doLogin(PasswordLoginLogic.java:27)
位于com.evappserver.servlets.PasswordLoginServlet.doGet(PasswordLoginServlet.java:37)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
位于org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
位于org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
位于org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:722)
原因:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver
在java.net.URLClassLoader$1.run(URLClassLoader.java:366)
在java.net.URLClassLoader$1.run(URLClassLoader.java:355)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:354)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:423)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:356)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:266)
位于org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:246)
…还有38个

此配置是否有问题?

我认为您应该在tomcat/lib文件夹中包含MySQL驱动程序,而不是将其与web应用程序一起部署。这样,服务器将找到合适的类来实例化您的连接池,一切都会正常进行。

检查项目的类路径是否正确ect包含文件mysql-connector-java-5.1.6.jar。maven运行时没有问题吗?

我也有同样的问题。出于未知原因,将
mysql-connector-java*.jar
放入
WEB-INF/lib
在Ubuntu LTS 14.04中不再起作用

我通过将此文件(以及仅此文件)复制到
/usr/share/tomcat7/lib
并将tomcat7作为服务重新启动来解决这个问题,tomcat7重新启动后,一切都恢复了生机


祝你好运

这个文件夹到底位于哪里?
WebContent\WEB\u INF\lib
?不,Tomcat服务器目录中应该有一个/lib目录。没有这样的目录。我应该创建一个目录并从pom.xml中删除依赖关系吗?这看起来很奇怪。请注意,我不是在谈论你的Eclipse(如果你使用Eclipse)项目,但关于安装Tomcat服务器的目录。请查找它,因为它应该有一个/lib文件夹,您可以在其中放置定义连接池所需的任何JDBC驱动程序。是的,一旦您这样做,如果您编程到纯JDBC接口,您就不需要pom.xml中的依赖项。我想我不知道是什么在Eclipse(我使用的)中,我有一个servers文件夹,在它下面有一个tomcat服务器