activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cristisor <cristisor...@yahoo.com>
Subject DefaultMessageListenerContainer start failure on remote connection
Date Wed, 24 Oct 2012 12:44:37 GMT
Hello,

I have a contextFactory and a topic inside a Tomee+ container and I'm trying
to access them remotely, from an application located outside of the
container but running in the same VM.
remote application context.xml:

	<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
		<property name="environment">
			<props>
				<prop
key="java.naming.factory.initial">org.apache.openejb.client.RemoteInitialContextFactory</prop>
				<prop
key="java.naming.provider.url">http://localhost:8080/tomee/ejb</prop>
				<prop key="java.naming.security.principal">tomee</prop>
				<prop key="java.naming.security.credentials">tomee</prop>
			</props>
		</property>
	</bean>
	
	<bean id="connectionFactory"
class="org.springframework.jndi.JndiObjectFactoryBean">
	    <property name="jndiTemplate" ref="jndiTemplate"/>
	    <property name="jndiName" value="jms/connectionFactory"/>
	    <property name="resourceRef" value="true" />
	</bean>
	
	<bean id="cachingConnectionFactory"
class="org.springframework.jms.connection.CachingConnectionFactory">
	    <property name="targetConnectionFactory" ref="connectionFactory"/>
	    <property name="sessionCacheSize" value="3"/>
	</bean>

	<bean id="destinationResolver"
class="org.springframework.jms.support.destination.JndiDestinationResolver">
	    <property name="jndiTemplate" ref="jndiTemplate"/>
	    <property name="cache" value="true"/>
	    <property name="fallbackToDynamicDestination" value="false"/>
	</bean>
	
	<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
		<property name="connectionFactory" ref="cachingConnectionFactory"/>
		<property name="destinationResolver" ref="destinationResolver"/>
	</bean>
	
	<bean id="messageListener"
class="org.publisher.listener.QueueMessageListener">
		<constructor-arg name="jmsTemplate" ref="jmsTemplate"></constructor-arg>
		<constructor-arg name="queueName"
value="java:comp/env/jms/queue1"></constructor-arg>
	</bean>
	
	<bean id="jmsContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
	    <property name="connectionFactory" ref="connectionFactory"/>
	    <property name="destinationResolver" ref="destinationResolver"/>
	    <property name="concurrentConsumers" value="1" />
	    <property name="destinationName" value="jms/topic1Node3"/>
	    <property name="messageListener" ref="messageListener" />
	    <property name="sessionAcknowledgeModeName" value="AUTO_ACKNOWLEDGE"/>
	    <property name="pubSubDomain" value="true"></property>
	</bean>

I set the following parameters when running the application:
-DResource/javax.jms.ConnectionFactory=connectionfactory:org.apache.activemq.ActiveMQConnectionFactory:tcp://localhost:61616
-DResource/javax.jms.Topic=topic:org.apache.activemq.command.ActiveMQTopic:jms/topic1Node3

When running the application I get the following log:

635  [main] DEBUG
org.springframework.context.support.DefaultLifecycleProcessor  - Starting
bean 'jmsContainer' of type [class
org.springframework.jms.listener.DefaultMessageListenerContainer]
778  [main] DEBUG
org.springframework.jms.listener.DefaultMessageListenerContainer  -
Established shared JMS Connection
778  [main] DEBUG
org.springframework.jms.listener.DefaultMessageListenerContainer  - Resumed
paused task:
org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker@4aab7165
10782 [main] DEBUG
org.springframework.jms.listener.DefaultMessageListenerContainer  -
Connection start failed - relying on listeners to perform recovery
javax.jms.JMSException: Wire format negotiation timeout: peer did not send
his wire format.
	at
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:62)
	at
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1395)
	at
org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1481)
	at
org.apache.activemq.ActiveMQConnection.start(ActiveMQConnection.java:516)
	at
org.springframework.jms.listener.AbstractJmsListeningContainer.startSharedConnection(AbstractJmsListeningContainer.java:441)
	at
org.springframework.jms.listener.DefaultMessageListenerContainer.startSharedConnection(DefaultMessageListenerContainer.java:776)
	at
org.springframework.jms.listener.AbstractJmsListeningContainer.doStart(AbstractJmsListeningContainer.java:291)
	at
org.springframework.jms.listener.AbstractJmsListeningContainer.start(AbstractJmsListeningContainer.java:264)
	at
org.springframework.jms.listener.DefaultMessageListenerContainer.start(DefaultMessageListenerContainer.java:561)
	at
org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:167)
	at
org.springframework.context.support.DefaultLifecycleProcessor.access$1(DefaultLifecycleProcessor.java:154)
	at
org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:339)
	at
org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:143)
	at
org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:108)
	at
org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:926)
	at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:467)
	at
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
	at
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
	at org.publisher.main.Main.main(Main.java:9)
Caused by: java.io.IOException: Wire format negotiation timeout: peer did
not send his wire format.
	at
org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:98)
	at
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:68)
	at
org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:81)
	at
org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:86)
	at
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1366)
	... 17 more
10785 [main] DEBUG
org.springframework.context.support.DefaultLifecycleProcessor  -
Successfully started bean 'jmsContainer'

If I switch from:
-DResource/javax.jms.ConnectionFactory=connectionfactory:org.apache.activemq.ActiveMQConnectionFactory:*tcp://localhost:61616*
-DResource/javax.jms.Topic=topic:org.apache.activemq.command.ActiveMQTopic:jms/topic1Node3
to:
-DResource/javax.jms.ConnectionFactory=connectionfactory:org.apache.activemq.ActiveMQConnectionFactory:*vm://localhost:61616*
-DResource/javax.jms.Topic=topic:org.apache.activemq.command.ActiveMQTopic:jms/topic1Node3
the application works ok and makes the lookup with success.

Here is the resource declaration in tomee.xml:
	<Resource id="JMSAdapter" type="ActiveMQResourceAdapter">
		BrokerXmlConfig=broker:(tcp://localhost:61616)?persistent=false
	</Resource>

	<Resource id="jms/connectionFactory" type="javax.jms.ConnectionFactory">
		ResourceAdapter = JMSAdapter
	</Resource>

	<Resource id="jms/topic1Node3" type="javax.jms.Topic">
		destination = Topic1Node3
	</Resource>

Can anyone tell me why there is a difference between "vm://" and "tcp://"?

Thank you.



--
View this message in context: http://activemq.2283324.n4.nabble.com/DefaultMessageListenerContainer-start-failure-on-remote-connection-tp4658159.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Mime
View raw message