Tomcat 8 上使用 Mybatis、c3p0 启动 webapp 时出错
Error starting webapp with Mybatis, c3p0 on Tomcat 8
我正在尝试在 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 无法启动,因为它无法连接到数据库。
有没有人升级到Tomcat8并且成功使用Mybatis-c3p0了?如果是,我是不是遗漏了什么?
解决了这个问题。这是 JDBC 驱动程序问题。 Mybatis 似乎不太擅长显示底层异常。
在 tomcat 8 的文档中找到:
Thus, the web applications that have database drivers in their
WEB-INF/lib directory cannot rely on the service provider mechanism
and should register the drivers explicitly.
所以,我在应用程序启动期间添加了一个 Class.forName()
和适当的 driverClass,这解决了我的问题。
我正在尝试在 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 无法启动,因为它无法连接到数据库。
有没有人升级到Tomcat8并且成功使用Mybatis-c3p0了?如果是,我是不是遗漏了什么?
解决了这个问题。这是 JDBC 驱动程序问题。 Mybatis 似乎不太擅长显示底层异常。
在 tomcat 8 的文档中找到:
Thus, the web applications that have database drivers in their WEB-INF/lib directory cannot rely on the service provider mechanism and should register the drivers explicitly.
所以,我在应用程序启动期间添加了一个 Class.forName()
和适当的 driverClass,这解决了我的问题。