Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tomcat webapp在重新部署后无法使用MySQL驱动程序_Mysql_Jdbc_Tomcat6_Apache Commons Dbcp - Fatal编程技术网

Tomcat webapp在重新部署后无法使用MySQL驱动程序

Tomcat webapp在重新部署后无法使用MySQL驱动程序,mysql,jdbc,tomcat6,apache-commons-dbcp,Mysql,Jdbc,Tomcat6,Apache Commons Dbcp,我正在使用commons dbcp为一个小型Spring webapp中的MySQL数据库进行连接池,该应用程序作为WAR文件部署到一个本地Tomcat 6.0.28容器(使用Ubuntu包管理器安装),使用Sun 1.6 JDK。部署是从Maven使用tomcat-Maven-plugin-1.1完成的,目标是tomcat:redeploy。MySQL连接器/jjar位于webapp的WEB-INF/lib目录中 Tomcat启动后首次加载webapp时,一切正常。然而,当我重新部署webap

我正在使用commons dbcp为一个小型Spring webapp中的MySQL数据库进行连接池,该应用程序作为WAR文件部署到一个本地Tomcat 6.0.28容器(使用Ubuntu包管理器安装),使用Sun 1.6 JDK。部署是从Maven使用tomcat-Maven-plugin-1.1完成的,目标是
tomcat:redeploy
。MySQL连接器/jjar位于webapp的
WEB-INF/lib
目录中

Tomcat启动后首次加载webapp时,一切正常。然而,当我重新部署webapp时,Tomcat取消部署webapp时,它会抱怨JDBC驱动程序没有注销

code>SEVERE: The web application [/taskrun] registered the JBDC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. Mar 11, 2011 11:29:46 AM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc 如果在重新部署后手动重新启动Tomcat,一切都正常

我知道MySQL驱动程序在加载类时会向DriverManager注册,但是当重新部署webapp时,
com.MySQL.jdbc.driver
类似乎不会被重新加载。当重新加载webapp时,Tomcat的WebappClassLoader应该从
WEB-INF/lib
目录重新加载类,还是在两次部署之间将它们保留在内存中?或者在部署之后我必须自己重新注册MySQL驱动程序吗

此外,我看到很多帖子建议将驱动程序jar移动到Tomcat的
commons/lib
目录,但我希望尽可能避免WAR文件外部的依赖关系


提前感谢您的帮助。

将JDBC驱动程序放置到WEB-INF/lib通常是个坏主意。通常,JDBC驱动程序在所有部署的应用程序之间共享,在适当的配置中,它们应该是全局Tomcat配置的一部分(将其放在Tomcat“lib”中)。除非您有非常具体的原因,否则不应在每次更新应用程序时重新部署驱动程序。

非常感谢!在WEB-INF/lib和tomcat/shared中都使用jdbc驱动程序会在运行时导致我的webapp发生冲突。你的建议终于解决了我的问题!
org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class 'com.mysql.jdbc.jdbc2.optional.MysqlDataSource' for connect URL 'jdbc:mysql://127.0.0.1:3306/testdb?autoReconnect=true'
    at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
    at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
    ... 14 more
Caused by: java.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getDriver(DriverManager.java:279)
    at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
    ... 18 more