0

my application deployed on Tomcat am I am trying to send and receive message from remote queue.

I already have succeeded to send few messages to remote queue. Now I am trying to build message listener container, however my onMessage(method is never called), don't understand what I am missing.

This is my configuration

<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="connectionFactory" />
    <property name="destinationResolver" ref="destinationResolver" />
</bean>

<bean id="connectionFactory" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
    <property name="targetConnectionFactory" ref="targetConnectionFactory"/>
    <property name="username" value="user"/>
    <property name="password" value="pass"/>
</bean>

<bean id="targetConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiTemplate" ref="jndiTemplate" />
    <property name="jndiName" value="MY_TEST_QUEUE" />
    <property name="proxyInterface" value="javax.jms.ConnectionFactory"/>
</bean>

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

<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
    <property name="environment">
        <props>
            <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
            <prop key="java.naming.provider.url">t3://host:port</prop>
        </props>
    </property>
</bean>

<bean id="messageListener" class="com.package.MyCustomMDB" />

<bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="connectionFactory"/>
    <property name="destinationName" value="MY_TEST_QUEUE"/>
    <property name="destinationResolver" ref="destinationResolver" />
    <property name="messageListener" ref="messageListener" />
</bean>

And implementation of mdb

public class MyCustomMDB implements MessageListener {
@Override
public void onMessage(Message message) {
    System.out.println(message.toString());
}}

Could you please advise me where I am doing something wrong?

liotur
  • 809
  • 2
  • 17
  • 36

1 Answers1

0

You are using MY_TEST_QUEUE for the both the jndiName of targetConnectionFactory and destinationName of jmsContainer. The the jndiName of targetConnectionFactory should refer to the name of a connection factory rather than a queue.

Justin Bertram
  • 29,372
  • 4
  • 21
  • 43