【发布时间】: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
-
不确定我是否理解垃圾收集问题。容器允许在应用程序运行时对
@SingletonEJB 进行垃圾收集是不合法的。那将是一个容器错误。
标签: jakarta-ee singleton ejb design-patterns