1

別のアプリケーションにメッセージを送信する必要があるサーバーがあります。私は Spring JmsTemplate を使用していますが、構成を起動して実行する際にいくつか問題があります。

現在、次の例外が発生しています。

Error creating bean with name 'connectionFactory' defined in ServletContext resource [/WEB-INF/config/application-context.xml]: Invocation of init method failed; nested exception is javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out]

(必要に応じて完全なスタック トレースを投稿できますが、ネストされた例外の長いバージョンにすぎません。)

「受信タイムアウト」の部分は、メッセージを受信しようとしているように聞こえますが、これは望ましくありません。ここにあるものはすべて、いくつかの異なる例と SO の投稿からまとめたものであり、さまざまな部分とそれらが何をしているのかについて頭を悩ませています。エラーの原因に加えて、メッセージを受信しない場合に必要のないものはありますか?

私の JmsQueueSender クラス (メッセージを送信します):

private JmsTemplate jmsTemplate;
private Destination destination;

public void setConnectionFactory(ConnectionFactory cf) {
    jmsTemplate = new JmsTemplate(cf);
}

public void setQueue(Queue queue) {
    this.destination = queue;
}

私のアプリケーションコンテキストでは:

<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.provider.url">jnp://address.com:port</prop> -->
            <prop key="java.naming.factory.url.pkgs">org.jboss.naming:org.jnp.interfaces</prop>
        </props>
    </property>
</bean>

<bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiTemplate" ref="jndiTemplate" />
    <property name="jndiName" value="ConnectionFactory" />
</bean>

<bean id="jmsQueueConnectionFactory"
    class="org.springframework.jms.connection.SingleConnectionFactory">
    <property name="targetConnectionFactory" ref="connectionFactory"/>
    <property name="pubSubDomain" value="false" />
</bean>

<bean id="jmsDestinationResolver"
    class="org.springframework.jms.support.destination.JndiDestinationResolver">
    <property name="jndiTemplate">
        <ref bean="jndiTemplate"/>
    </property>
    <property name="cache">
        <value>true</value>
    </property>
</bean>

<bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate102">
    <property name="connectionFactory" ref="jmsQueueConnectionFactory" />
    <property name="destinationResolver" ref="jmsDestinationResolver" />
    <property name="pubSubDomain" value="false" />
</bean>

<bean id="jmsSender" class="package.JmsQueueSender">
    <property name="queue" value="queue/AlertQueueGIAfterSent" />
    <property name="connectionFactory" ref="jmsQueueTemplate" />
</bean>
4

0 に答える 0