【发布时间】:2015-07-17 21:57:16
【问题描述】:
我正在尝试在 Tomcat 8 上部署我的 webapp,它使用 Mybatis 3.2.7 和 c3p0 进行连接池以连接到 SQLServer 数据库。我的类路径中有 sqljdbc4.jar。我在 webapp 启动期间查询数据库以获取一些值。
该应用程序在 Tomcat 7 中运行,但是在 Tomcat 8 上,我无法连接到数据库。我使用 eclipse 调试了很多,根本原因在 c3p0 中的文件 BasicResourcePool.class 文件中,它正在等待资源可用但随后抛出 java.lang.InterruptedException。
因此,Mybatis 会抛出 java.SQL.SQLException,因此我的 webapp 无法启动,因为它无法连接到数据库。
有没有人升级到Tomcat 8并且成功使用了Mybatis-c3p0?如果是的话,我在这里错过了什么吗?
【问题讨论】:
-
根本原因是在你的等待()线程上调用中断()的人/任何人(也许是导致它们等待()这么长时间以至于决定中断它们的条件)。
-
@SteveWaldman 我们可以通过调试以某种方式知道什么是中断吗?
-
不幸的是,不是很容易。抛开您可能施加的任何安全策略的约束,任何东西都可以访问线程并调用其中断()方法。也许在您的调试器中,您可以监视对该方法的调用,或者在您的代码库中搜索它们。否则,可能会调用 interrupt() 以响应长时间等待,您可能会尝试解决导致客户端长时间等待的条件或设置。
标签: java tomcat mybatis c3p0 tomcat8