我有一个包含5个托管服务器的weblogic域。其中3个在集群中,2个是独立的。一个应用程序部署在群集上,第二个和第三个部署在剩余的两个节点上。 在所有3个应用程序中,我需要使用相同的JNDI名称访问JMS队列和连接工厂(即使用群集和独立实例中的jms / q1来访问队列)。它不必是同一个队列,但名称在域中应该是唯一的。 我尝试使用分布式队列(UDD),但它不允许将群集与非群集节点混合。
有哪些选项可以实现这一点,并将JMS队列部署在同一个域中?
答案 0 :(得分:0)
抱歉暧昧,我会尽力澄清一下。理想情况下,所有JNDI名称应指向同一队列(如果不可能,我会离开该选项)。
现在关于这个问题。我有一个部署在集群c1上的打包应用程序(IBM Maximo),以及具有3个不同ear文件的独立节点n1,n2,这些文件具有轻微的配置差异(每个文件的登录方法都不同)。我需要启用JMS与外部ESB系统的集成。我无法为每个部署实例配置JMS名称,从数据库中读取JNDI。
weblogic的问题在于 distiributed 队列(UDD)无法在群集和独立实例上部署。分布式队列在部署的所有节点上都具有唯一的JNDI名称。
一个非常难看的解决方案可能是使用外部JNDI服务器,并指向外部JMS服务器,如HORNETQ。我已经尝试过了,解决方案简单而且有效,但是这是另一个在生产中管理的系统,我想避免它。
我知道可以这样做,因为分布式队列机制在集群的weblogic中工作,每个节点指向具有相同JNDI名称的相同JMS队列,但我无法添加独立节点。此外,为每个独立实例创建单独的域并不是一个非常理想的选择。