【发布时间】:2018-02-23 19:36:17
【问题描述】:
我正在尝试实现数据库连接池。出于某种原因,我在使用多个线程时会随机出现异常。
当我只有一个时,一切都很好。此外,至少在我进行测试时,问题只出现在开始时。由于我不确定是什么原因造成的,因此我不能确定它们以后不会发生。
使用 c3p0 版本 0.9.5.2
Example output from my test: https://pastebin.com/NrcR6mhz
这个测试有 3 个线程,每个线程运行 1000 次简单查询。我把输出缩短了,因为后面没有例外。
tl;dr 版本的错误消息:
- 不能对已关闭的 Statement 进行操作!!!
- 不能对关闭的连接进行操作!!!
我不会费心上传整个项目,因为 DB 是单独配置的。不过,你可以在这里看到我所有类的代码:
Main - https://pastebin.com/1Rgjr8H5
Pool conf https://pastebin.com/wtbw1X5v
Controller https://pastebin.com/BvPh0guY
由于 c3p0 似乎不错的库恕我直言,我想我在这里做错了什么。请问有什么建议吗?
【问题讨论】:
-
请查看:stackoverflow.com/help/mcve 和 idownvotedbecau.se/nocode。代码在问题中。当您放置代码时,突出显示出现错误的部分(您确实调试过吗?)。链接,即使作为文本输入,在 SO 上也不是很好的形式。