今天开发项目启动tomcat的时候报出WARN ThreadPoolAsynchronousRunner:608和WARN ThreadPoolAsynchronousRunner:624错误,且有APPARENT DEADLOCK等提示,错误如下图所示:
信息显示的意思好像是说线程池异步运行的时候造成了线程死锁,当时百思不得其解。后来在网上查资料发现,更换数据库连接配置就可以解决这个问题了。
具体原因还不了解,参考网友的解答:
<pre class="java:collapse" name="code" style="color: rgb(75, 75, 75); font-size: 13px; line-height: 19.5px;">网上多是说c3p0 bug引起的
我的数据库oracle 10.2.0.1,oracle14.jar也是10.2.0.1版本,我做了两个修改这个错误就没有了,具体原因还不明,先解决了再说。
一.修改数据库方言为oracle.jdbc.driver.OracleDriver(原来为oracle.jdbc.OracleDriver 在linux上也可以使用的)
二.修改数据库的最大连接数,见:<a target=_blank title="http://www.blogjava.net/zhip/archive/2008/05/16/200769.html" href="http://www.blogjava.net/zhip/archive/2008/05/16/200769.html" target="_blank" style="color: rgb(26, 139, 200); text-decoration: none;">http://www.blogjava.net/zhip/archive/2008/05/16/200769.html</a>
参考:http://www.blogjava.net/liuyimx/articles/296849.html
网上信息提供参考:
首先尝试解决数据库的链接问题,既然出错信息报告unknown source,说明数据库没有链接上,可检查——
1.链接串是否正确
2.数据库服务是否已经启动
3.检查数据库用户名和密码是否正确
如果用代码测试数据库可以链接上,那么这个问题应该不会再出现。
找到原因了,原来是做过系统集群,有多台集群服务器,在同一时间触发一个insert操作,导致冲突。