【发布时间】:2018-09-20 20:54:07
【问题描述】:
我正在阅读 this FAQ by Oracle 关于与远程 JMS 提供程序集成的信息。远程 JMS 提供者是指由不同域中的另一个 WebLogic 集群托管的 JMS 服务器。
FAQ 很旧,并没有详细说明如何实际配置远程 JMS 连接。以下是常见问题解答
问。与远程 JMS 提供者建立通信需要哪些信息?
A.您将需要以下信息来设置与远程 JMS 提供程序的通信:
目标类型——远程 JMS 目标是队列还是主题。 远程 JMS 目标的 JNDI 名称。 对于持久主题订阅者——唯一标识它们的连接 ID 和订阅者 ID 名称。消息驱动 EJB 根据 EJB 名称为这些值提供默认值。 对于非 WebLogic 远程 JMS 提供程序 Initial Context Factory Class Name — 远程 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 映射仍然相关,我在哪里可以找到有关它的更多信息?
【问题讨论】:
标签: java jakarta-ee jms weblogic weblogic12c