【问题标题】:EclipseLink permanent connectionEclipseLink 永久连接
【发布时间】:2012-01-11 16:26:50
【问题描述】:

我有一个项目在 Tomcat 7 下使用 EclipseLink 2.1.3。

困扰我的是,与服务器的连接不会在应用程序的整个生命周期中持续存在。
要启动 ServerSession,我必须手动访问应用程序。

有没有办法在应用程序部署时自动启动 ServerSession 并使其始终运行?这样我就可以在长时间空闲后访问应用程序而无需等待?

谢谢!

编辑: 我在 persistence.xml 中有以下几行

  <property name="eclipselink.jdbc.read-connections.min" value="5"/>
  <property name="eclipselink.jdbc.read-connections.max" value="10"/>
  <property name="eclipselink.jdbc.write-connections.min" value="6"/>
  <property name="eclipselink.jdbc.write-connections.max" value="12"/>

【问题讨论】:

  • 什么是 ServerSession?你说的是 JDBC 连接吗?
  • 是的,没错。在日志文件中,它显示为“ServerSession” - [EL Info]:2012-01-11 18:24:35.181--ServerSession(2672545)--EclipseLink,版本:Eclipse Persistence Services - 2.1.3.v20110304-r9073

标签: java mysql jakarta-ee jpa eclipselink


【解决方案1】:

服务器应用程序通常使用 JDBC 连接池来获取连接并重用它们。根据您使用的池,您可以将其配置为保持给定数量的连接打开。

【讨论】:

  • 我已经在读写上设置了最小连接数 > 0 但仍然没有..
  • 在长时间空闲后访问应用程序时,如何诊断服务器正忙于打开新连接?也许 JVM 内存刚刚被交换到磁盘,并且需要时间将其重新加载到主内存中。无论如何,在生产中,你不应该有太多空闲时间。
  • 实际上,当我将应用程序部署到服务器时,我会将其放置约 10 分钟。什么都没有发生,但是当我访问该应用程序时,我可以看到只有 EclipseLink 登录到数据库服务器。我可以发布完整的 persistence.xml fwiw
  • 也许只有在初始化servlet时才创建会话工厂,并且直到发出第一个请求时才初始化servlet。这完全取决于您的 webapp 的工作方式和配置方式。
  • 我设法用你的最后一条评论来修复它,方法是在启动时创建我的实体管理器,比如
猜你喜欢
  • 2011-07-28
  • 2016-01-16
  • 1970-01-01
  • 2014-03-16
  • 1970-01-01
  • 2013-02-13
  • 1970-01-01
  • 2014-02-04
  • 1970-01-01
相关资源
最近更新 更多