我们正在尝试找到一个在 weblogic 上创建单例的好解决方案。
现在我们有一个既部署在集群环境中又部署在单个服务器中的耳朵。耳朵内是一个持有某种状态的单身人士。在 2 台服务器上复制该状态会导致不正确的行为。目前,只能通过部署为 max 1 的 MDB 访问该单例。该 MDB 正在侦听一个主题。该主题未分发,这导致我们仅在一台服务器上拥有它,但会导致我们不喜欢的部署警告。
我们考虑了几个解决方案:
- Weblogic 的 SingletonService。工作正常,但它只在集群上工作,导致应用程序的单个服务器版本和开发人员沙箱出现问题。
- 为单例和周围代码创建一个单独的耳朵,并将其部署在单独的托管服务器上。这预计会按要求工作,但需要大量工作才能将我们的单例与周围的代码分离,并要求我们向远程访问公开大量功能。
- 使单例无状态删除单例要求。应该工作,但同样需要大量工作
还有其他方法可以解决问题吗?也许是一些 JMS 技巧?