【问题标题】:How to use remote JMS provider in WebLogic 12c如何在 WebLogic 12c 中使用远程 JMS 提供程序
【发布时间】: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


    【解决方案1】:

    有 3 种方式可以连接到远程 JMS 服务器 1)使用国外的JMS(即JNDI映射) 2)使用消息桥(适配器有点老派) 3) 使用 SAF(存储和转发)

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

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

    【讨论】:

    • 我使用 Foreign JNDI Provider 来访问本地应用程序中的远程服务器 JMS 资源并且它工作正常。但是我怎么能用集群远程域和分布式 JMS 来实现呢?我认为外部 JNDI 链接将成为单点故障,因为它针对具有物理地址的单个远程服务器实例。
    • 如果源是集群的,那么您使用集群感知 jndi url,它将是 t3://acme1,acme2,acme3:7001 或 t3://acme1,acme2,acme3:7001跨度>
    猜你喜欢
    • 2023-03-29
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 2014-03-12
    • 1970-01-01
    • 2016-07-17
    • 2023-03-05
    相关资源
    最近更新 更多