Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java servlet的休眠超时问题_Java_Database_Hibernate_Servlets - Fatal编程技术网

Java servlet的休眠超时问题

Java servlet的休眠超时问题,java,database,hibernate,servlets,Java,Database,Hibernate,Servlets,我有一个包含hibernate的Tomcat servlet。它正常工作。当servlet启动时,我初始化hibernate并创建一个会话工厂。然后,我使用这个会话工厂在执行各种数据库事务时生成会话。到现在为止,一直都还不错。我的问题是在servlet上长时间不活动之后出现的(比如,当用户晚上回家后,第二天早上尝试登录)。突然,我无法与数据库通信。在我看到的日志中 org.hibernate.exception.JDBCConectionException:无法执行查询 如果我停止并重新启动To

我有一个包含hibernate的Tomcat servlet。它正常工作。当servlet启动时,我初始化hibernate并创建一个会话工厂。然后,我使用这个会话工厂在执行各种数据库事务时生成会话。到现在为止,一直都还不错。我的问题是在servlet上长时间不活动之后出现的(比如,当用户晚上回家后,第二天早上尝试登录)。突然,我无法与数据库通信。在我看到的日志中

org.hibernate.exception.JDBCConectionException:无法执行查询

如果我停止并重新启动Tomcat,重新初始化servlet并重建会话工厂,一切都会正常工作。这就好像会话工厂本身正在超时

有什么想法吗

谢谢

艾略特

如果我停止并重新启动Tomcat,重新初始化servlet并重建会话工厂,一切都会正常工作。这就好像会话工厂本身正在超时

它不是会话工厂,而是会话工厂使用的连接(例如,众所周知,MySQL在默认情况下会在8小时不活动后超时连接)。要么:

  • 使用能够在借用时验证连接并续订连接的连接池~或~
  • 增加数据库端的空闲超时

嗯。假设我使用c3P0连接池。如何在hibernate.cfg.xml文件中指定要“在借用时验证连接”,还是默认情况下这样做

中记录了使用C3P0时的各种选项。我的建议是使用以下参数:

最可靠的测试时间 正在办理退房手续。但是这个 也是一家公司最昂贵的选择 客户端性能透视图。最 应用程序应该相当有效 可靠地使用以下各项的组合:
idleConnectionTestPeriod
testConnectionsOnCheckIn
。两者 怠速测试和值机柜台测试是 异步执行,这将导致 为了获得更好的绩效,双方都认为 而且是真实的

请注意,对于许多应用程序,高 性能比性能更重要 偶尔使用数据库的风险 例外<默认情况下为strong> 配置,c3p0没有连接 根本不需要测试。设定一个相当长的时间
idleConnectionTestPeriod
,而不是 在以下位置测试签出和签入 都是一款优秀、高性能的产品 接近


要使用Hibernate配置C3P0,请确保读取(并使用适当的属性和适当的文件)。

OK。假设我使用c3P0连接池。如何在hibernate.cfg.xml文件中指定要“在借用时验证连接”,还是默认情况下这样做?