【问题标题】:Wildfly 8.1 throws NameNotFoundException on remote JMS ConnectionFactory lookupWildfly 8.1 在远程 JMS ConnectionFactory 查找中抛出 NameNotFoundException
【发布时间】:2015-04-25 14:29:02
【问题描述】:

我遇到了一个问题,表面上看起来很简单,但这让我困扰了几天。

我正在尝试在 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 命名远程客户端上下文工厂)我总是得到一个 name not found 异常。

我去打印了 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$1.handleServerMessage(Protocol.java:127)
    at org.jboss.naming.remote.protocol.v1.RemoteNamingServerV1$MessageReciever$1.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)

任何类型的读者都可以提供任何帮助,我们将不胜感激,这让我大吃一惊。

【问题讨论】:

    标签: java jms wildfly


    【解决方案1】:

    我用来连接 JMS 资源的字符串有误。当 JNDI 是远程的时,连接要求您删除 JNDI 的 java:jboss/exported 部分。

    【讨论】:

      猜你喜欢
      • 2015-07-01
      • 2018-04-20
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      相关资源
      最近更新 更多