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

Reply via email to