Wildfly 8.1 在远程 JMS ConnectionFactory 查找时抛出 NameNotFoundException
Wildfly 8.1 throws NameNotFoundException on remote JMS ConnectionFactory lookup
我遇到了一个问题,表面上看起来很简单,但这让我困惑了几天。
我正在尝试在 Wildfly 8.1.0 上使用以下 jndi 名称在服务器上部署 JMS 连接工厂和队列:
java:jboss/exported/jms/UnicsRetry for the connection factory
java:jboss/exported/queue/Create for the queue
这是我对这两个组件的配置 xml 位,根据我从文档中收集到的信息,它看起来是正确的:
<connection-factory name="UnicsJmsSource">
<connectors>
<connector-ref connector-name="http-connector"/>
</connectors>
<entries>
<entry name="java:jboss/exported/jms/UnicsRetry"/>
</entries>
<compress-large-messages>false</compress-large-messages>
<failover-on-initial-connection>false</failover-on-initial-connection>
<use-global-pools>true</use-global-pools>
</connection-factory>
<jms-queue name="CreateQueue">
<entry name="java:jboss/exported/queue/Create"/>
<durable>true</durable>
</jms-queue>
Wildfly 本身接受这些并顺利启动(使用命令行中的独立 xml),但是当我尝试通过 JNDI 访问连接工厂时(使用此提供程序 url : http-remoting://localhost:8080 使用 jboss 命名远程客户端上下文工厂)我总是得到一个名称未找到的异常。
我去打印了 java:global 和 java:jboss 的 jndi 绑定,如下所示:
context.listBindings("java:global");
在这两种情况下我都得到了这个输出
jboss/exported/jms/UnicsRetry -- service jboss.naming.context.java.jboss.exported.jboss.exported.jms.UnicsRetry
看起来连接工厂确实已经启动并绑定了,那为什么查找失败了呢?不用说,我还没有能够尝试队列本身或我真正想要测试的 MDB。我认为可能是我必须删除 java: 像列表中显示的那样进行查找时 jndi 的一部分,但它也没有用。
如果它与我的问题有任何关系,我不得不在我的 pom.xml 中放置这些依赖项来构建我的测试客户端:
<dependency>
<groupId>org.jboss</groupId>
<artifactId>jboss-remote-naming</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.xnio</groupId>
<artifactId>xnio-nio</artifactId>
<version>3.3.0.Final</version>
</dependency>
这是我从独立客户端和 Mule JMS 连接器获得的完整堆栈跟踪。
Exception in thread "main" javax.naming.NameNotFoundException: jboss/exported/jms/UnicsRetry -- service jboss.naming.context.java.jboss.exported.jboss.exported.jms.UnicsRetry
at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:104)
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:202)
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:179)
at org.jboss.naming.remote.protocol.v1.Protocol.handleServerMessage(Protocol.java:127)
at org.jboss.naming.remote.protocol.v1.RemoteNamingServerV1$MessageReciever.run(RemoteNamingServerV1.java:73)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
任何形式的帮助 reader 都将不胜感激,这让我很紧张。
我用来连接 JMS 资源的字符串有误。当 JNDI 是远程时,连接需要您删除 JNDI 的 java:jboss/exported 部分。
我遇到了一个问题,表面上看起来很简单,但这让我困惑了几天。
我正在尝试在 Wildfly 8.1.0 上使用以下 jndi 名称在服务器上部署 JMS 连接工厂和队列:
java:jboss/exported/jms/UnicsRetry for the connection factory
java:jboss/exported/queue/Create for the queue
这是我对这两个组件的配置 xml 位,根据我从文档中收集到的信息,它看起来是正确的:
<connection-factory name="UnicsJmsSource">
<connectors>
<connector-ref connector-name="http-connector"/>
</connectors>
<entries>
<entry name="java:jboss/exported/jms/UnicsRetry"/>
</entries>
<compress-large-messages>false</compress-large-messages>
<failover-on-initial-connection>false</failover-on-initial-connection>
<use-global-pools>true</use-global-pools>
</connection-factory>
<jms-queue name="CreateQueue">
<entry name="java:jboss/exported/queue/Create"/>
<durable>true</durable>
</jms-queue>
Wildfly 本身接受这些并顺利启动(使用命令行中的独立 xml),但是当我尝试通过 JNDI 访问连接工厂时(使用此提供程序 url : http-remoting://localhost:8080 使用 jboss 命名远程客户端上下文工厂)我总是得到一个名称未找到的异常。
我去打印了 java:global 和 java:jboss 的 jndi 绑定,如下所示:
context.listBindings("java:global");
在这两种情况下我都得到了这个输出
jboss/exported/jms/UnicsRetry -- service jboss.naming.context.java.jboss.exported.jboss.exported.jms.UnicsRetry
看起来连接工厂确实已经启动并绑定了,那为什么查找失败了呢?不用说,我还没有能够尝试队列本身或我真正想要测试的 MDB。我认为可能是我必须删除 java: 像列表中显示的那样进行查找时 jndi 的一部分,但它也没有用。
如果它与我的问题有任何关系,我不得不在我的 pom.xml 中放置这些依赖项来构建我的测试客户端:
<dependency>
<groupId>org.jboss</groupId>
<artifactId>jboss-remote-naming</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.xnio</groupId>
<artifactId>xnio-nio</artifactId>
<version>3.3.0.Final</version>
</dependency>
这是我从独立客户端和 Mule JMS 连接器获得的完整堆栈跟踪。
Exception in thread "main" javax.naming.NameNotFoundException: jboss/exported/jms/UnicsRetry -- service jboss.naming.context.java.jboss.exported.jboss.exported.jms.UnicsRetry
at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:104)
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:202)
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:179)
at org.jboss.naming.remote.protocol.v1.Protocol.handleServerMessage(Protocol.java:127)
at org.jboss.naming.remote.protocol.v1.RemoteNamingServerV1$MessageReciever.run(RemoteNamingServerV1.java:73)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
任何形式的帮助 reader 都将不胜感激,这让我很紧张。
我用来连接 JMS 资源的字符串有误。当 JNDI 是远程时,连接需要您删除 JNDI 的 java:jboss/exported 部分。