Java servlet的休眠超时问题
我有一个包含hibernate的Tomcat servlet。它正常工作。当servlet启动时,我初始化hibernate并创建一个会话工厂。然后,我使用这个会话工厂在执行各种数据库事务时生成会话。到现在为止,一直都还不错。我的问题是在servlet上长时间不活动之后出现的(比如,当用户晚上回家后,第二天早上尝试登录)。突然,我无法与数据库通信。在我看到的日志中 org.hibernate.exception.JDBCConectionException:无法执行查询 如果我停止并重新启动Tomcat,重新初始化servlet并重建会话工厂,一切都会正常工作。这就好像会话工厂本身正在超时 有什么想法吗 谢谢 艾略特 如果我停止并重新启动Tomcat,重新初始化servlet并重建会话工厂,一切都会正常工作。这就好像会话工厂本身正在超时 它不是会话工厂,而是会话工厂使用的连接(例如,众所周知,MySQL在默认情况下会在8小时不活动后超时连接)。要么:Java servlet的休眠超时问题,java,database,hibernate,servlets,Java,Database,Hibernate,Servlets,我有一个包含hibernate的Tomcat servlet。它正常工作。当servlet启动时,我初始化hibernate并创建一个会话工厂。然后,我使用这个会话工厂在执行各种数据库事务时生成会话。到现在为止,一直都还不错。我的问题是在servlet上长时间不活动之后出现的(比如,当用户晚上回家后,第二天早上尝试登录)。突然,我无法与数据库通信。在我看到的日志中 org.hibernate.exception.JDBCConectionException:无法执行查询 如果我停止并重新启动To
- 使用能够在借用时验证连接并续订连接的连接池~或~
- 增加数据库端的空闲超时
嗯。假设我使用c3P0连接池。如何在hibernate.cfg.xml文件中指定要“在借用时验证连接”,还是默认情况下这样做 中记录了使用C3P0时的各种选项。我的建议是使用以下参数: 最可靠的测试时间 正在办理退房手续。但是这个 也是一家公司最昂贵的选择 客户端性能透视图。最 应用程序应该相当有效 可靠地使用以下各项的组合:
idleConnectionTestPeriod
和
testConnectionsOnCheckIn
。两者
怠速测试和值机柜台测试是
异步执行,这将导致
为了获得更好的绩效,双方都认为
而且是真实的
请注意,对于许多应用程序,高
性能比性能更重要
偶尔使用数据库的风险
例外<默认情况下为strong>
配置,c3p0没有连接
根本不需要测试。设定一个相当长的时间
idleConnectionTestPeriod
,而不是
在以下位置测试签出和签入
都是一款优秀、高性能的产品
接近
要使用Hibernate配置C3P0,请确保读取(并使用适当的属性和适当的文件)。OK。假设我使用c3P0连接池。如何在hibernate.cfg.xml文件中指定要“在借用时验证连接”,还是默认情况下这样做?