Java 在Tomcat 8上使用Mybatis、c3p0启动webapp时出错

Java 在Tomcat 8上使用Mybatis、c3p0启动webapp时出错,java,tomcat,mybatis,c3p0,tomcat8,Java,Tomcat,Mybatis,C3p0,Tomcat8,我正在尝试将我的webapp部署到tomcat8上,该应用程序使用Mybatis 3.2.7和c3p0进行连接池,以连接到SQLServer数据库。我的类路径中有sqljdbc4.jar。我在webapp启动期间查询数据库以获取一些值 应用程序在Tomcat7中工作,但是在Tomcat8上,我无法连接到数据库。我使用eclipse进行了大量调试,根本原因在于c3p0中的文件BasicResourcePool.class中,它正在等待资源变得可用,但随后抛出一个java.lang.Interrup

我正在尝试将我的webapp部署到tomcat8上,该应用程序使用Mybatis 3.2.7c3p0进行连接池,以连接到SQLServer数据库。我的类路径中有sqljdbc4.jar。我在webapp启动期间查询数据库以获取一些值

应用程序在Tomcat7中工作,但是在Tomcat8上,我无法连接到数据库。我使用eclipse进行了大量调试,根本原因在于c3p0中的文件
BasicResourcePool.class
中,它正在等待资源变得可用,但随后抛出一个
java.lang.InterruptedException

因此,Mybatis抛出了一个
java.SQL.SQLException
,因此我的webapp无法启动,因为它无法连接到数据库


是否有其他人升级到Tomcat 8并成功使用Mybatis-c3p0?如果是,我是不是遗漏了什么?

解决了这个问题。这是JDBC驱动程序的问题。Mybatis似乎不太擅长显示潜在的异常

在tomcat 8的文档中找到:

因此,具有数据库驱动程序的web应用程序 WEB-INF/lib目录不能依赖于服务提供程序机制 并应明确登记驾驶员


因此,我在应用程序启动期间添加了一个
类.forName()
,并使用适当的driverClass解决了我的问题。

根本原因是在等待线程上调用interrupt()的人/任何人(可能是导致他们等待()太久以至于有人决定中断他们的情况).@SteveWaldman我们能通过调试知道什么是中断吗?不幸的是,不是很容易。抛开您可能施加的任何安全策略的限制,任何东西都可以访问线程并调用其interrupt()方法。也许在调试器中,您可以在对该方法的调用中放置手表,或者在代码库中搜索手表。否则,很可能会调用interrupt()以响应长时间的等待,您可能会尝试解决使客户端处于长时间等待的条件或设置。