【发布时间】:2014-08-03 10:30:20
【问题描述】:
我使用的是 Amazon 的开源对象关系映射器 Carbonado。 Carbonado 就像休眠。我的服务包含一个使用 Carbonado 访问数据库的公共 API 方法。此方法适用于前几次调用。但是,如果我反复调用此方法,那么我 得到以下错误:
com.amazon.carbonado.FetchException: com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.v2.resourcepool.BasicResourcePool
请帮我修复错误。
谢谢
【问题讨论】:
-
您是否有连接泄漏,正如您的标题所暗示的那样?在这种情况下,请确保您的公共 API 方法可靠地关闭()它打开的连接。否则,您可能应该提供更多信息。您可以通过将 c3p0 配置参数 checkoutTimeout 设置为零(这将是其默认设置)来消除您看到的特定错误。如果没有 checkoutTimeout,如果你有一个连接泄漏,应用程序只会挂起。可能没有任何问题,而您只是将 checkoutTimeout 设置为过低的值。请提供配置信息。
-
重启服务器后,总能成功调用8次方法。但是调用 8 次后,该方法总是返回相同的错误。
-
可能是连接泄漏,如果 maxPoolSize 为 8。如果是这样,您必须修复它 - 确保打开的连接得到 close()ed。
-
@Steve Waldman 感谢您的帮助。问题是由于光标未关闭造成的。
标签: hibernate jdbc database-connection connection-pooling c3p0