我正在将Hibernate 4与BoneCP集成起来,并希望了解这些属性意味着什么:
<property name="idleConnectionTestPeriod">30</property>
<property name="idleMaxAge">240</property>
<property name="connectionTestStatement">select 1 from db.table limit 1</property>我的应用程序需要保持与mysqldb 24x7的常量连接。
这是否意味着每30分钟就会执行一次测试语句?240分钟后,这种联系就会变得陈旧吗?如何使我的连接永久化,因为在这种配置中,我有时会得到
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.发布于 2013-06-10 03:15:41
正如BoneCP编写这里的作者所写的那样,有两种管理连接状态的方法--使用和设置maxConnectionAgeInSeconds的方式。
重要注意事项--不要忘记MySQL配置,比如wait_timeout。它以秒为单位,必须大于maxConnectionAgeInSeconds。您可以在MySQL目录中的my.ini文件中更改此参数。
例如,我的当前配置:
wait_timeout=3600 (MySQL参数);
maxConnectionAgeInSeconds=3000 (BoneCP参数)
另外,我在wait_timeout中设置了相同的wait_timeout变量。我不确定这是否有意义,但我看到了MySQL需要min(interactive_timeout,wait_timeout)的某个地方。实际上,interactive_timeout是交互式客户机的超时--当您使用MySQL命令行时,您就是交互式客户端。无论如何,最好让它们相等--即使这个参数也没有意义--就像保险一样。
在设置变量之前,不要忘记关闭mysql (cmd->net )。设置新值后,使用show variables like '%timeout%';在命令行中检查它们
https://stackoverflow.com/questions/17014517
复制相似问题