2

Tomcatでhornetqを使用してJMSアプリケーションを実行しようとしています!この記事をフォローしてみました。jndi.propertiesをクライアントクラスパスに入れました。jndi.properties:

java.naming.factory.initial=org.apache.naming.java.javaURLContextFactory 
java.naming.factory.url.pkgs=org.apache.naming

これらの依存関係をpom.xmlに追加しました:

<dependency> 
    <groupId>tomcat</groupId> 
    <artifactId>naming-factory</artifactId> 
    <version>5.5.23</version> 
    <scope>test</scope> 
</dependency> 
<dependency> 
     <groupId>tomcat</groupId> 
     <artifactId>naming-resources</artifactId> 
     <version>5.5.23</version> 
     <scope>test</scope> 
 </dependency>

私のJMSスプリングBean:

<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
        <property name="environment">
            <props>
                <prop key="java.naming.factory.initial">org.apache.naming.java.javaURLContextFactory</prop>
                <prop key="java.naming.factory.url.pkgs">org.apache.naming</prop>
            </props>
        </property>
    </bean>

<!-- Connection Factory -->
<bean id="hornetqConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiTemplate" ref="jndiTemplate"/>
    <property name="jndiName" value="/ConnectionFactory" />
</bean>

<!-- Destinations -->
<bean id="annotationDeleteCommandDestination" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiTemplate" ref="jndiTemplate"/>
    <property name="jndiName" value="/queue/command/annotation/deleteQueue" />
</bean>

HornetQデフォルトサーバー(スタンドアロン、非クラスター化)を使用しています

hornetq-jms.xml:

<queue name="annotationDeleteCommandQueue">
    <entry name="/queue/command/annotation/deleteQueue"/>
</queue>

<connection-factory name="NettyConnectionFactory">
      <xa>false</xa>
      <connectors>
         <connector-ref connector-name="netty"/>
      </connectors>
      <entries>
         <entry name="/ConnectionFactory"/>
      </entries>
   </connection-factory>

しかし、Tomcatを起動すると、次のエラーが発生します。

 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hornetqConnectionFactory' defined in ServletContext resource [/WEB-INF/classes/config/spring/applicationContext-jms.xml]: 
Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: Name ConnectionFactory is not bound in this Context .........

なにが問題ですか?tomcatクラスパスにjarファイルを配置する必要がありますか?(どのjarファイルですか?)Tomcat構成にキューと接続ファクトリの定義を配置する必要がありますか?(どのように?)TomcatでJNDIを無効にして、代わりにhornetqスタンドアロンJNDIを使用できますか?

4

2 に答える 2

2

jndiTemplateを変更し(jboss命名を使用)、jnp-client.jarをクライアントクラスパスに追加することで、この問題を解決しました。

<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
    <property name="environment">
        <props>
            <prop key="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory</prop>
            <prop key="java.naming.factory.url.pkgs">org.jboss.naming:org.jnp.interfaces</prop>
            <prop key="java.naming.provider.url">jnp://localhost:1099</prop>
        </props>
    </property>
</bean>
于 2012-11-06T06:55:48.403 に答える
0

HornetQが正しく起動されていますか?エラーログは、 ConnectionFactoryが存在しないことを示しているようです。

別のツールを使用してHornetQにアクセスしようとしましたか?JMXまたはHermesJMS(http://www.hermesjms.com)を使用して、ConnectionFactory

于 2012-10-24T13:31:17.750 に答える