【问题标题】:best way to keep a connection alive and available in java EE environment在 Java EE 环境中保持连接活动和可用的最佳方法
【发布时间】:2012-03-01 10:22:15
【问题描述】:

我有连接到 MS Exchange 服务器的 Web 服务客户端。这个系统的初始连接时间很长,大约 30 秒。因此,我想在启动应用程序服务器后立即打开此初始连接,然后让无状态 ejbs 使用此连接,而无需重新连接到 MS Exchange 服务器。我对此的解决方案是创建一个注入到无状态 ejb 中的单例 EJB,以便我的连接始终打开,但我不确定这是否可行,因为单例 EJB 似乎可以收集垃圾。

所以我的问题是这样的:这是正确的方法还是我应该使用不同的方法来解决这个“服务提供商”问题?如果它是正确的,那么单例的垃圾收集呢,可以避免这样我不时需要重新连接吗?感谢您的任何反馈和想法!

【问题讨论】:

  • Singleton 被垃圾回收的问题只存在于较旧的 JVM 中。你读过这篇文章stackoverflow.com/questions/9514425/… 我在回答你的另一个问题时发布的吗?
  • 作为“交换服务器”是指 Microsoft Exchange 吗?
  • @PiotrekDe 是的,没错。现在更新了。
  • 也许您可以查看资源适配器。我从未使用过它们,但它们似乎是为您的目的而设计的 docs.oracle.com/javaee/6/tutorial/doc/gipgl.html
  • 不确定我是否理解垃圾收集问题。容器允许在应用程序运行时对@Singleton EJB 进行垃圾收集是不合法的。那将是一个容器错误。

标签: jakarta-ee singleton ejb design-patterns


【解决方案1】:

如果您对与 Exchange 服务器的单一连接感到满意,请将您的连接存储在静态变量中。将其包装在一个通过 getter 提供连接的类中,该 getter 还将在返回连接之前检查并自动重新连接。

【讨论】:

    猜你喜欢
    • 2018-09-30
    • 1970-01-01
    • 2010-10-22
    • 2013-02-18
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 2017-05-06
    • 2014-06-07
    相关资源
    最近更新 更多