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