如何在WebLogic 12c中使用远程JMS提供程序

时间:2018-04-11 05:27:56

标签: java java-ee jms weblogic weblogic12c

我正在阅读有关与远程JMS提供程序集成的this FAQ by Oracle。远程JMS提供程序是指由不同域中的另一个WebLogic群集托管的JMS服务器。

FAQ很旧,并没有详细说明如何实际配置远程JMS连接。以下是常见问题解答

  

Q值。设置与远程JMS提供程序的通信需要哪些信息?

     

一个。您将需要以下信息来设置与远程JMS提供程序的通信:

     

目标类型 - 远程JMS目标是队列还是主题。   远程JMS目标的JNDI名称。   对于持久主题订阅者 - 唯一标识它们的connection-id和subscriber-id名称。消息驱动的EJB基于EJB名称为这些值提供默认值。   对于非WebLogic远程JMS提供程序   初始上下文工厂类名称 - 远程JMS提供程序的JNDI查找服务的java类名称。   包含远程JMS提供程序的JMS客户机和JNDI客户机库的java jar的文件位置。确保在本地JVM的类路径中指定了这些jar。   远程提供程序的JNDI服务的URL。对于WebLogic服务器,URL通常采用t3:// hostaddress:port格式。如果您通过HTTP进行隧道传输,请使用http而不是t3开始URL。访问与应用程序位于同一WebLogic服务器或WebLogic群集上的WebLogic JMS服务器的服务器应用程序代码不需要URL。   远程提供程序的JMS连接工厂的JNDI名称。此连接工厂必须存在于远程提供程序上,而不是本地提供程序上。   如果JMS应用程序需要事务,则连接工厂必须支持XA。 WebLogic文档在启用用户事务时引用具有XA功能的工厂。

     

默认情况下,WebLogic服务器会自动提供三个不可配置的连接工厂:

     

weblogic.jms.ConnectionFactory-一个不支持XA的工厂。   weblogic.jms.XAConnectionFactory-一个支持XA的工厂   weblogic.jms.MessageDrivenBeanConnectionFactory - 一个支持XA的消息驱动EJB工厂。   必须显式配置其他WebLogic JMS连接工厂。

因此,基本思想是从远程服务器的JNDI上下文中检索JMS资源,并将它们存储在本地JNDI上下文中。

对我来说,做JNDI映射似乎是老派。在2018年与远程WebLogic 12c JMS提供程序集成的现代方法是什么?或者JNDI映射是否仍然相关,我在哪里可以找到有关它的更多信息?

1 个答案:

答案 0 :(得分:2)

有三种方法可以连接到远程JMS服务器 1)使用外部JMS(即JNDI映射) 2)使用Messaging bridge(适配器位旧学校) 3)使用SAF(存储和转发)

如果与远程JMS的连接可靠或本地和远程jms服务器的可用性相同,那么外部JMS是一个很好的简单选项。

如果您不能依赖远程JMS服务器的可用性,并且希望在消息到达时立即使用消息并让本地服务器在适当的时候处理它,那么建议使用SAF ..