如何获取新的JNDI名称(尤其是ConnectionFactory)

时间:2011-09-22 13:07:14

标签: jndi jboss7.x

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

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

当与JBoss 7一起使用时会产生NameNotFoundException。我还尝试了以下内容:

  • 的java:JMS / ConnectionFactory的
  • 的java:ENV / ConnectionFactory的

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

亲切的问候, 塞巴斯蒂安

2 个答案:

答案 0 :(得分:0)

尝试

  

的java:JBoss的/连接工厂

没有测试过,但是会尝试一下,因为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:/ ConnectionFactory的

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

答案 1 :(得分:0)

解决了它:

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

现在我将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" );

这是由JBoss 7的JMS配置中的bug引起的。似乎在7.0.1中修复,使用该版本,没有注意到任何修复 - 但是,上述配置有效。