Jakarta ee 在JavaEE环境中保持连接活动和可用的最佳方法

Jakarta ee 在JavaEE环境中保持连接活动和可用的最佳方法,jakarta-ee,singleton,ejb,design-patterns,Jakarta Ee,Singleton,Ejb,Design Patterns,我有一个连接到MS Exchange服务器的web服务客户端。这个系统的初始连接时间非常长,大约30秒。因此,我希望在启动应用服务器后立即打开此初始连接,然后让无状态EJB使用此连接,而无需重新连接到MS Exchange服务器。我的解决方案是创建一个注入无状态EJB的单例EJB,以便我的连接始终是开放的,但我不确定这是否可行,因为单例EJB似乎可以被垃圾收集 所以我的问题是:这是正确的方法,还是我应该使用不同的方法来解决这个“服务提供商”问题?如果它是正确的,那么单例的垃圾收集又如何呢?这可以

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


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

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

单例被垃圾收集的问题只存在于较旧的JVM中。您是否阅读了我在回答您的另一个问题时发布的这篇文章?作为“exchange服务器”,您是指Microsoft exchange吗?@PiotrekDe是的,这是正确的。现在更新了。也许你可以查看资源适配器。我从未使用过它们,但它们似乎是为您的目的而设计的,我不确定我是否理解垃圾收集问题。容器在应用程序运行时允许垃圾收集
@Singleton
EJB是不合法的。这将是一个容器错误。