The exception seems weird as the session is only closed when JMS flow is stopped. Does this happen in a junit test case ? If yes, it may be because your test case shut down the jbi container before all exchanges are processed.
On 9/21/06, Mats Norén <[EMAIL PROTECTED]> wrote:
When running a testcase from the config below I get an IllegalStateException stating that the ActiveMQSession is closed. I had to goals with this config, first I want to use the JMSFlow to be able to cluster a pool of servicemix-instances. Secondly, I wanted to be able to subscribe to messages received on the JMSReceiver-component. Everything worked fine until I added the subscription-nodes. Is this a known problem or is it my configuration? /Regards Mats <beans xmlns:sm="http://servicemix.apache.org/config/1.0" xmlns:foo="http://skl.se/servicemix/"> <bean id="broker" class="org.apache.activemq.xbean.BrokerFactoryBean" singleton="true"> <property name="config" value="classpath:broker.xml"/> </bean> <!-- the JBI container --> <sm:container id="jbi" depends-on="broker" embedded="true" flowName="jms?brokerURL=tcp://localhost:61626"> <sm:activationSpecs> <sm:activationSpec componentName="myJmsSender" service="foo:myJmsSender"> <sm:component><bean class="org.apache.servicemix.components.jms.JmsSenderComponent"> <property name="template"> <bean class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory"> <ref local="jmsFactory"/> </property> <property name="defaultDestinationName" value="test.org.apache.servicemix.example.1"/> <property name="pubSubDomain" value="true"/> </bean> </property> </bean></sm:component> </sm:activationSpec> <sm:activationSpec componentName="myJmsReceiver" service="foo:myJmsReceiver" destinationService="foo:receiver"> <sm:component><bean class="org.apache.servicemix.components.jms.JmsReceiverComponent"> <property name="template"> <bean class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory"> <ref local="jmsFactory"/> </property> <property name="defaultDestinationName" value="test.org.apache.servicemix.example.1"/> <property name="pubSubDomain" value="true"/> </bean> </property> </bean></sm:component> </sm:activationSpec> <sm:activationSpec componentName="receiver" service="foo:receiver"> <sm:component><bean class="org.apache.servicemix.tck.ReceiverComponent"/></sm:component> </sm:activationSpec> <!-- just to test that we are sending messages, lets trace the messages we receive --> <sm:activationSpec componentName="jmsTrace" service="foo:jmsTrace" failIfNoDestinationEndpoint="false"> <sm:component><bean class="org.apache.servicemix.components.jms.JmsReceiverComponent"> <property name="template"> <bean class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory"> <ref local="jmsFactory"/> </property> <property name="defaultDestinationName" value="test.org.apache.servicemix.example.1"/> <property name="pubSubDomain" value="true"/> </bean> </property> </bean></sm:component> </sm:activationSpec> <!-- <sm:activationSpec componentName="jmsTrace" service="foo:trace"> <sm:component><bean class="org.apache.servicemix.components.util.TraceComponent"/></sm:component> </sm:activationSpec> --> <sm:activationSpec componentName="trace" service="foo:trace"> <sm:component><bean class="org.apache.servicemix.components.groovy.GroovyComponent"> <property name="disableOutput" value="true"/> <property name="scriptText"> <value> <![CDATA[ log.info "VIA JMS $inMessage with body: $inMessage.bodyText" ]]> </value> </property> </bean></sm:component> <sm:subscriptions> <sm:subscriptionSpec service="foo:jmsTrace" /> </sm:subscriptions> </sm:activationSpec> </sm:activationSpecs> </sm:container> <bean id="client" class="org.apache.servicemix.client.DefaultServiceMixClient"> <constructor-arg ref="jbi"/> </bean> <bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory"> <property name="connectionFactory"> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://localhost:61626" /> </bean> </property> </bean> </beans> 2006-09-21 15:00:06,684 [Thread-6 ] DEBUG JMSFlow - Called Flow send 2006-09-21 15:00:06,685 [Thread-6 ] ERROR JMSFlow - Failed to send exchange: InOnly[ id: ID:sheriff-33494-1158843602191-7:0 status: Done role: consumer service: {http://skl.se/servicemix/}receiver endpoint: receiver in: <?xml version="1.0" encoding="UTF-8"?><person> <name>James</name> <email>[EMAIL PROTECTED]</email> <accountant> <email>[EMAIL PROTECTED]</email> </accountant> <attachments>example.xml</attachments> </person> ] internal JMS Network javax.jms.IllegalStateException: The Session is closed at org.apache.activemq.ActiveMQSession.checkClosed(ActiveMQSession.java:577) at org.apache.activemq.ActiveMQSession.createQueue(ActiveMQSession.java:932) at org.apache.servicemix.jbi.nmr.flow.jms.JMSFlow.doRouting(JMSFlow.java:499) at org.apache.servicemix.jbi.nmr.flow.jms.JMSFlow.doSend(JMSFlow.java:460) at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.send(AbstractFlow.java:121) at org.apache.servicemix.jbi.nmr.DefaultBroker.sendExchangePacket(DefaultBroker.java:298) at org.apache.servicemix.jbi.container.JBIContainer.sendExchange(JBIContainer.java:793) at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:375) at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:411) at org.apache.servicemix.components.util.PojoSupport.done(PojoSupport.java:224) at org.apache.servicemix.tck.ReceiverComponent.onMessageExchange(ReceiverComponent.java:50) at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:624) at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:169) at org.apache.servicemix.jbi.nmr.flow.jms.JMSFlow.access$301(JMSFlow.java:73) at org.apache.servicemix.jbi.nmr.flow.jms.JMSFlow$5.run(JMSFlow.java:534) at org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:291) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Thread.java:595) 2006-09-21 15:00:06,694 [Thread-6 ] DEBUG DeliveryChannelImpl - Exception processing: ID:sheriff-33494-1158843602191-7:0 in DeliveryChannel{receiver} 2006-09-21 15:00:06,694 [Thread-6 ] ERROR JMSFlow - Caught an exception routing ExchangePacket: javax.jbi.messaging.MessagingException: javax.jms.IllegalStateException: The Session is closed at org.apache.servicemix.jbi.nmr.flow.jms.JMSFlow.doRouting(JMSFlow.java:504) at org.apache.servicemix.jbi.nmr.flow.jms.JMSFlow.doSend(JMSFlow.java:460) at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.send(AbstractFlow.java:121) at org.apache.servicemix.jbi.nmr.DefaultBroker.sendExchangePacket(DefaultBroker.java:298) at org.apache.servicemix.jbi.container.JBIContainer.sendExchange(JBIContainer.java:793) at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:375) at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:411) at org.apache.servicemix.components.util.PojoSupport.done(PojoSupport.java:224) at org.apache.servicemix.tck.ReceiverComponent.onMessageExchange(ReceiverComponent.java:50) at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:624) at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:169) at org.apache.servicemix.jbi.nmr.flow.jms.JMSFlow.access$301(JMSFlow.java:73) at org.apache.servicemix.jbi.nmr.flow.jms.JMSFlow$5.run(JMSFlow.java:534) at org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:291) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Thread.java:595) Caused by: javax.jms.IllegalStateException: The Session is closed at org.apache.activemq.ActiveMQSession.checkClosed(ActiveMQSession.java:577) at org.apache.activemq.ActiveMQSession.createQueue(ActiveMQSession.java:932) at org.apache.servicemix.jbi.nmr.flow.jms.JMSFlow.doRouting(JMSFlow.java:499) ... 15 more
-- Cheers, Guillaume Nodet
