【问题标题】:Can I create a domain-wide singleton service in Weblogic?我可以在 Weblogic 中创建域范围的单例服务吗?
【发布时间】:2015-07-23 09:40:05
【问题描述】:
我们目前为我们的应用程序的几个部分设置了一个集群 Weblogic 设置,以达到负载平衡、故障转移等方面的通常保证。最近,我们添加了一个实现 weblogic.cluster...SingletonService 的单例服务,它完成了它设计的工作,但它似乎不是我们需要的工作。在当前设置中,同一域下的多个集群需要访问单例服务,但这似乎不起作用。
我们如何在域范围内设置单例服务,即同时为多个集群设置?
健全性测试:我们观察到 Weblogic SingletonService 不能在域范围内使用是否正确?
【问题讨论】:
标签:
jakarta-ee
weblogic
weblogic12c
【解决方案1】:
文档说明
“单例服务是在托管服务器上运行的服务,它是
一次只能在集群的一个成员上使用”
是的,你的理智测试没问题。
WebLogic 中没有任何域范围的单例功能。我可以想象一些解决方法:
使用 JMX 检查哪些服务器正在运行,从系统属性中检索服务器名称并仅在第一个运行的托管服务器名称与当前服务器名称匹配时运行您的逻辑。
设置域范围的 Coherence 集群,并将本地成员与集群中最旧的成员进行比较,并使用它来决定哪个服务器是领导者并运行您的逻辑。
使用 JNDI 树设置一些可怕的信号量逻辑,这是一个域范围的资源。