1

我升级到 JBoss 7.0.1,我们正在使用以下 JNDI 查找来连接到 HornetQ 消息队列。

InitialContext jndiContext = new InitialContext();
QueueConnectionFactory qf = (QueueConnectionFactory) jndiContext.lookup( "ConnectionFactory" );

这会导致NameNotFoundException与 JBoss 7 一起使用。我还尝试了以下方法:

  • java:jms/连接工厂
  • java:env/ConnectionFactory

..和其他一些。但我认为猜测不会让我走得太远。如何获取未在控制台中记录的新 JNDI 名称(例如我的 EJB bean)?

亲切的问候,塞巴斯蒂安

4

2 回答 2

0

尝试

java:jboss/ConnectionFactory

没有测试它,但会试一试,因为https://docs.jboss.org/author/display/AS7/How+do+I+migrate+my+application+from+AS5+or+AS6+to +AS7说:

根据上下文,像“DefaultDS”或“jdbc/DefaultDS”这样的非限定相​​对名称应该相对于“java:comp/env”、“java:module/env”或“java:jboss/env”进行限定。

更正和编辑:看看我的安装,正确的是:

java:/连接工厂

因为它也在 domain.xml 中定义。

于 2011-09-22T14:49:25.243 回答
0

解决了它:

在 JBoss 7 中,整个 HornetQ 部分默认被禁用。必须从 to 复制相应的部分standalone-preview.xml并将standalone.xml所有内容从META-INF/hornetq-jms.xmlJBoss 配置中移动。

现在我将 ConnectionFactory 配置如下:

        <jms-connection-factories>
            <connection-factory name="InVmConnectionFactory">
                <connectors>
                    <connector-ref connector-name="in-vm"/>
                </connectors>
                <entries>
                    <entry name="ConnectionFactory"/>
                </entries>
            </connection-factory>
        </jms-connection-factories>

我可以通过执行此 JNDI 查找来使用它:

QueueConnectionFactory qf = (QueueConnectionFactory) jndiContext.lookup( "java:/ConnectionFactory" );

This is caused by a bug in the JMS configuration of JBoss 7. Seems to be fixed in 7.0.1, used that version, didn't notice any fix - however, the above configuration works.

于 2011-09-22T15:18:38.783 回答