activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christian Posta <christian.po...@gmail.com>
Subject Re: DefaultMessageListenerContainer start failure on remote connection
Date Wed, 24 Oct 2012 12:59:31 GMT
the vm:// protocol can be used for inter-JVM interaction with the broker
(note, you don't need a port number there just vm://<brokerName> )

http://activemq.apache.org/vm-transport-reference.html

The tcp:// protocol uses the tcp stack for communication with the broker:
http://activemq.apache.org/tcp-transport-reference.html

How did you set up the transports in your broker's config?


On Wed, Oct 24, 2012 at 5:44 AM, cristisor <cristisor_ac@yahoo.com> wrote:

> 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.
>



-- 
*Christian Posta*
http://www.christianposta.com/blog

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message