1

我正在使用 MYSQL 数据库和基本的 JDBC 连接池来连接数据库。应用程序部署在 tomcat 服务器中。几次操作后,数据库连接为空。

任何人都可以让我知道原因吗?

4

1 回答 1

0

这可能有几个不同的原因:

  1. 当你用完它们时不要调用close()你的资源。Connection这可能会导致你的连接池在所有的Connections 都被分发并且没有关闭之后被耗尽。
  2. 不止一次调用close()你的资源。Connection关闭 aConnection会将其返回到池中,以便另一个线程可以获取它。如果你close()第二次调用,你现在已经为另一个线程关闭了它。
  3. 您的代码实际上是将您的Connection实例设置到null某个地方。
  4. 您让Connection资源处于打开和空闲状态的时间过长,并且对您来说超时了。如果您的代码在查询之间有一些长时间运行的操作,请考虑在查询之间关闭Connection并获取一个新的。
  5. 数据库服务器出于某种原因关闭了您的连接,而您的连接池对此一无所知。为了缓解这种情况,您可以将连接池配置为在借用时进行测试。这基本上会在连接上发出一个测试查询,以确保它在将其交给您的应用程序之前是活动的。注意:那里有一些开销。
于 2012-11-16T17:47:33.923 回答