【问题标题】:Manage EntityManagerFactory in a web app在 Web 应用程序中管理 EntityManagerFactory
【发布时间】:2011-09-20 13:35:23
【问题描述】:

我使用 GWT 开发了一个 Web 应用程序。我只创建了一个 EntityManagerFactory (单例),但我不知道什么时候必须关闭它。我已按照此网站的说明进行操作:http://javanotepad.blogspot.com/2007/05/jpa-entitymanagerfactory-in-web.html,但 8 小时后没有进入我的应用程序,我遇到了错误:

    78616509 [http-9080-Processor4] ERROR org.hibernate.transaction.JDBCTransaction - JDBC begin failed
com.mysql.jdbc.CommunicationsException: The last packet successfully received from the server was 44,115,64
4 milliseconds ago.  The last packet sent successfully to the server was 44,115,644 milliseconds ago. is lo
nger than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing
 connection validity before use in your application, increasing the server configured values for client tim
eouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1112)

经过 2 或 3 次尝试后一切正常。如果我在每次交易后关闭 EntityManagerFactory 我没有问题,但我不想这样做。我想知道如何管理 EntityManagerFactory 循环。

提前致谢。

【问题讨论】:

    标签: java hibernate gwt jdbc


    【解决方案1】:

    错误信息自己说

    从服务器成功收到的最后一个数据包是 44,115,64 4 毫秒前。最后一个成功发送到服务器的数据包是 44,115,644 毫秒前。比配置的服务器长 'wait_timeout' 的值。您应该考虑到期和/或 在您的应用程序中使用前测试连接有效性, 增加客户端超时的服务器配置值,或使用 Connector/J 连接属性 'autoReconnect=true' 来避免这种情况 问题。

    推荐的方法是使用管理过期连接的c3p0 connection pool

    Hibernate Documentation
    然而,Hibernate 自己的连接池算法相当 初级的。它旨在帮助您入门,而不是 用于生产系统,甚至用于性能 测试。您应该使用第三方池以获得最佳性能和 稳定。只需替换 hibernate.connection.pool_size 属性 具有连接池特定设置。这将关闭 Hibernate 的 内部池。例如,您可能喜欢使用 c3p0。

    在 MYSQL 参考文档中,不建议使用 autoReconnect 属性。

    Connector/J autoReconnect
    驱动程序是否应该尝试重新建立陈旧和/或死连接? 如果启用,驱动程序将对发出的查询抛出异常 属于当前事务的陈旧或死连接, 但会在发出下一个查询之前尝试重新连接 新事务中的连接。此功能的使用不 推荐,因为它具有与会话状态相关的副作用和 应用程序不处理 SQLExceptions 时的数据一致性 正确,并且仅在您无法使用时使用 配置您的应用程序以处理因死机导致的 SQLExceptions 并正确地过时的连接。或者,调查设置 MySQL 服务器变量“wait_timeout”设置为某个高值而不是 默认为 8 小时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-17
      • 1970-01-01
      • 2011-12-09
      • 2015-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-30
      相关资源
      最近更新 更多