我可以在 Weblogic 中创建域范围的单例服务吗?
Can I create a domain-wide singleton service in Weblogic?
我们目前为我们的应用程序的几个部分设置了一个集群 Weblogic 设置,以达到负载平衡、故障转移等方面的通常保证。最近,我们添加了一个实现 weblogic.cluster...SingletonService 的单例服务,它完成了它设计的工作,但似乎不是我们要求的工作。在当前设置中,同一域下有多个集群需要访问单例服务,但似乎这不起作用。
我们如何在全域范围内,即同时为多个集群设置单例服务?
合理性测试:我们观察到 Weblogic SingletonService 不能在全域范围内使用是否正确?
文档说明
"A singleton service is a service running on a managed server that is
available on only one member of a cluster at a time"
所以是的,你的理智测试没问题。
WebLogic 中没有任何域范围的单例功能。我可以想象一些解决方法:
使用 JMX 检查哪些服务器是 运行,从系统属性和 运行 中检索服务器名称,仅当第一个 运行 托管服务器名称时和当前服务器名称匹配。
设置域范围的 Coherence 集群,将本地成员与集群中最老的成员进行比较,并使用它来决定哪个服务器是领导者并运行您的逻辑。
使用 JNDI 树设置一些可怕的信号量逻辑,这是一个域范围的资源。
我们目前为我们的应用程序的几个部分设置了一个集群 Weblogic 设置,以达到负载平衡、故障转移等方面的通常保证。最近,我们添加了一个实现 weblogic.cluster...SingletonService 的单例服务,它完成了它设计的工作,但似乎不是我们要求的工作。在当前设置中,同一域下有多个集群需要访问单例服务,但似乎这不起作用。
我们如何在全域范围内,即同时为多个集群设置单例服务?
合理性测试:我们观察到 Weblogic SingletonService 不能在全域范围内使用是否正确?
文档说明
"A singleton service is a service running on a managed server that is available on only one member of a cluster at a time"
所以是的,你的理智测试没问题。
WebLogic 中没有任何域范围的单例功能。我可以想象一些解决方法:
使用 JMX 检查哪些服务器是 运行,从系统属性和 运行 中检索服务器名称,仅当第一个 运行 托管服务器名称时和当前服务器名称匹配。
设置域范围的 Coherence 集群,将本地成员与集群中最老的成员进行比较,并使用它来决定哪个服务器是领导者并运行您的逻辑。
使用 JNDI 树设置一些可怕的信号量逻辑,这是一个域范围的资源。