在weblogic 10.3上单身人士

时间:2013-02-13 15:58:41

标签: java-ee singleton jms weblogic

我们正在努力寻找一种在weblogic上创建单例的好方法。

现在我们有一个在集群环境和单个服务器中部署的耳朵。在耳朵内是一个拥有某种状态的单身人士。在2台服务器上复制该状态会导致错误的行为。目前,仅通过部署为最大1的MDB访问该单例。该MDB正在侦听主题。该主题未分发,导致我们只在一台服务器上使用它,但导致我们不喜欢的部署警告。

我们考虑了几个解决方案:

  • Weblogic的SingletonService。工作正常,但它适用于群集,只会导致应用程序的单个服务器版本和开发人员沙箱的问题。
  • 为单例和周围代码创建单独的ear,并将其部署在单独的受管服务器上。预计这将按要求工作,但需要大量工作才能将我们的单例与周围代码分离,并要求我们向远程访问公开大量功能。
  • 使单例无状态删除单例要求。应该工作,但又需要做很多工作

还有其他方法可以解决这个问题吗?也许有些JMS技巧?

3 个答案:

答案 0 :(得分:2)

帕维尔,我看到你自己已经提出了许多好主意。看起来你需要一个单独的交叉集群来进行计数。你需要的单身人士不一定是内存中的单身人士。您可以将计数移动到数据库表。数据库表可以充当单例。每当计数增加时,您进行jdbc调用以更新表中的计数字段。

答案 1 :(得分:1)

答案 2 :(得分:0)

我不知道我是否理解你的问题,也许最简单的解决方案是让主题分发并使用它将单例状态传播到所有集群节点。

您可以使用该主题来传播单例状态,我的意思是,只有一个单例状态,对需要隐式重新加载的更改或行为,向主题发送消息,每个MDB订阅主题都会收到消息(这里分布式是技巧)(例如,一个群集节点的MDB),并在每个节点中按需要运行。

希望得到这个帮助,但我不知道我是否理解你的问题。