weblogic12c - 将 ActiveMQ Artemis 7.4 与 Weblogic 12.x 桥接时出现错误 "Invalid broker URL"

标签 weblogic12c activemq-artemis

我正在尝试在 Oracle 12.x 和 Redhat ActiveMQ Artemis 7.4 之间建立桥梁。这是为建立桥梁所做的工作:

  1. 将 artemis-jms-client-all-2.9.0.redhat-00005.jar 设置为 WL 类路径
  2. 将以下属性设置为 WL 类路径:
java.naming.factory.initial=org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory
connectionFactory.ConnectionFactory=amq.xaqcf.myqueue
queue.queues/myqueue=myqueue

但是,我收到以下错误:

java.lang.Exception: javax.resource.ResourceException: ConnectionFactory: failed to get initial context (InitialContextFactory =org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory, url = tcp://brokername:61616?type=XA_CF, user name = amq)
        at weblogic.jms.adapter.JMSBaseConnection.throwResourceException(JMSBaseConnection.java:1750)
        at weblogic.jms.adapter.JMSBaseConnection.startInternal(JMSBaseConnection.java:538)
        at weblogic.jms.adapter.JMSBaseConnection.start(JMSBaseConnection.java:264)
        at 
...
-------------- Linked Exception ------------
javax.naming.NamingException: Invalid broker URL
        at org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory.getInitialContext(ActiveMQInitialContextFactory.java:85)

根据 ActiveMQInitialContextFactory.java ,这是由于以下 block :

for (Map.Entry<?, ?> entry : environment.entrySet()) {
    String key = entry.getKey().toString();
    if (key.startsWith(connectionFactoryPrefix)) {
        String jndiName = key.substring(connectionFactoryPrefix.length());
        try {
            data.put(jndiName, createConnectionFactory((String) environment.get(key), jndiName));
        } catch (Exception e) {
            e.printStackTrace();
            throw new NamingException("Invalid broker URL");
        }
    }
}

这是 e.printStackTrace() 的异常:

Exception: javax.naming.NameNotFoundException: amq.xaqcf.myqueue
        at org.apache.activemq.artemis.jndi.ReadOnlyContext.lookup(ReadOnlyContext.java:236) 
        at javax.naming.InitialContext.lookup(InitialContext.java:417)

我在 Oracle Weblogic 12.x 与 ActiveMQ 6.3 之间桥接没有问题。这里提出了类似的问题Is there a Java 1.7 compatible Artemis JMS client?但它适用于使用 Java 1.7 的 Oracle SOA 10.x。

我怎样才能让它发挥作用?宜ActiveMQInitialContextFactory.java适应吗?

最佳答案

您的问题是因为您正在尝试查找连接工厂 amq.xaqcf.myqueue,但实际上您并未在 JNDI 属性中定义该连接工厂。相反,你有这一行:

connectionFactory.ConnectionFactory=amq.xaqcf.myqueue

这一行实际上定义了一个名为 ConnectionFactory 的连接工厂,其 URL amq.xaqcf.myqueue 是无效的。试试这个:

connectionFactory.amq.xaqcf.myqueue=tcp://brokername:61616?type=XA_CF

这些属性的语法在 the Artemis documentation 中定义.

关于weblogic12c - 将 ActiveMQ Artemis 7.4 与 Weblogic 12.x 桥接时出现错误 "Invalid broker URL",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57924183/

相关文章:

java - Spring Boot将apache activemq迁移到artemis

在 Artemis 上实现 SSL,但具有无效信任存储和用户凭据的客户端能够连接到代理

ssl - 无法连接到管理服务器 weblogic 12.2.1

java - Weblogic 12.1.3 上下文路径已被模块错误使用

spring - 在Weblogic 12.2.1上部署项目时发生NullPointerException

java - 从 Wildfly 13 发送消息到远程 Artemis ActiveMQ

java - 阿耳忒弥斯休息界面

java - Weblogic 11g : BEA-382513: OSB Replace action failed updating variable "body": {err}FORG0005: expected exactly one item, 获得 0 件商品

OHS 12c 中的 SSL 配置

java - 通过 jConsole/JMX 的 Activemq Artemis