This is a problem that has been fixed a long time ago. I see two solutions to your problem: 1) upgrade to ServiceMix 3.0, the main problem being that the jboss deployer has not been upgrade :( 2) compile your ServiceMix 2.0 including the fix in org.servicemix.components.jms.JmsReceiverComponent You will find the latest source code at http://svn.apache.org/repos/asf/incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsReceiverComponent.java
Cheers, Guillaume Nodet On 4/10/06, Mika <[EMAIL PROTECTED]> wrote: > I have a problem using JMS with ServiceMix in Jboss 4.0.2. I'm using > ServiceMix Jboss Deployer 2.0. > I have two servicemix xml files I have deployed to JBoss. The one > injecting messages into JBossMQ queue works fine but > the one trying to receive messages from that same queue is getting > javax.jms.IllegalStateException: The MessageConsumer is closed when > being deployed. With Hermes I can see that the quartz-sm.xml is > successfully putting messages into queue. > Can someone point me to the right path is there something wrong with my > configuration. Below is both of the -sm.xml and at the bottom a stack > trace. > > Thanks in advance. > > --------- quartz-sm.xml --------------------- > > <?xml version="1.0" encoding="UTF-8"?> > <beans xmlns="http://xbean.org/schemas/spring/1.0" > xmlns:spring="http://xbean.org/schemas/spring/1.0" > xmlns:sm="http://servicemix.org/config/1.0" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://xbean.org/schemas/spring/1.0 > ../../conf/spring-beans.xsd > http://servicemix.org/config/1.0 > ../../conf/servicemix.xsd" > xmlns:my="http://servicemix.org/demo/"> > > <!-- the JBI container --> > <sm:container spring:id="jbi" useMBeanServer="false" > createMBeanServer="false" dumpStats="true" statsInterval="10"> > > <sm:activationSpecs> > > <!-- lets kick off a timer every 5 seconds --> > <sm:activationSpec componentName="timer" service="my:timer" > destinationService="my:myJmsSender"> > <sm:component> > <bean xmlns="http://xbean.org/schemas/spring/1.0" > > class="org.servicemix.components.quartz.QuartzComponent"> > <property name="triggers"> > <map> > <entry> > <key> > <bean > class="org.quartz.SimpleTrigger"> > <property > name="repeatInterval" value="500000" /> > <property name="repeatCount" > value="-1" /> > </bean> > </key> > <bean > class="org.quartz.JobDetail"> > <property name="name" value="My > Example Job" /> > <property name="group" > value="ServiceMix" /> > </bean> > </entry> > </map> > </property> > </bean> > </sm:component> > </sm:activationSpec> > > > <!-- Route the event to a trace component that just outputs > the event to the console --> > <sm:activationSpec componentName="trace" service="my:trace"> > <sm:component> > <bean xmlns="http://xbean.org/schemas/spring/1.0" > > class="org.servicemix.components.util.TraceComponent" /> > </sm:component> > </sm:activationSpec> > > <!-- --> > <sm:activationSpec componentName="myJmsSender" service="my:myJmsSender" > > <sm:component><bean > class="org.servicemix.components.jms.JmsSenderComponent"> > <property name="template"> > <bean class="org.springframework.jms.core.JmsTemplate102"> > <property name="connectionFactory"> > <ref local="jmsQueueConnectionFactory"/> > </property> > <property name="defaultDestination"> > <ref bean="orderQueue"/> > </property> > > <property name="pubSubDomain" value="false"/> > </bean> > </property> > </bean></sm:component> > </sm:activationSpec> > <!-- --> > > <sm:activationSpec componentName="myJmsReceiver" > service="my:myJmsReceiver" destinationService="my:trace" > failIfNoDestinationEndpoint="false"> > <sm:component><bean > class="org.servicemix.components.jms.JmsReceiverComponent"> > <property name="template"> > <bean class="org.springframework.jms.core.JmsTemplate102"> > <property name="connectionFactory"> > <ref local="jmsQueueConnectionFactory"/> > </property> > <property name="defaultDestination"> > <ref bean="orderQueue"/> > </property> > <property name="pubSubDomain" value="false"/> > <!--<property name="receiveTimeout"> > <value>20000</value> > </property>--> > </bean> > </property> > </bean></sm:component> > </sm:activationSpec> > > <!-- --> > > > </sm:activationSpecs> > </sm:container> > > <!-- JMS Queue Connection Factory --> > <!-- --> > <bean id="jmsQueueConnectionFactory" > class="org.springframework.jndi.JndiObjectFactoryBean"> > <property name="jndiTemplate"> > <ref bean="jndiTemplate"/> > </property> > <property name="jndiName"> > <value>UIL2ConnectionFactory</value> > </property> > </bean> > <!-- --> > <!-- JNDI Template --> > <!-- --> > <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> > <property name="environment"> > <props> > <prop key="java.naming.factory.initial"> > org.jnp.interfaces.NamingContextFactory > </prop> > <prop key="java.naming.provider.url"> > localhost > </prop> > <prop key="java.naming.factory.url.pkgs"> > org.jnp.interfaces:org.jboss.naming > </prop> > </props> > </property> > </bean> > <!-- --> > <!-- JMS Send destination --> > > <bean id="orderQueue" > class="org.springframework.jndi.JndiObjectFactoryBean"> > <property name="jndiTemplate"> > <ref bean="jndiTemplate"/> > </property> > <property name="jndiName"> > <value>queue/OrderQueue</value> > </property> > </bean> > </beans> > > ----------- quartz-sm.xml - END ------------------------------- > > ----------- jms-sm.xml - START ------------------------- > <?xml version="1.0" encoding="UTF-8"?> > <beans xmlns="http://xbean.org/schemas/spring/1.0" > xmlns:spring="http://xbean.org/schemas/spring/1.0" > xmlns:sm="http://servicemix.org/config/1.0" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://xbean.org/schemas/spring/1.0 > ../../conf/spring-beans.xsd > http://servicemix.org/config/1.0 > ../../conf/servicemix.xsd" > xmlns:my="http://servicemix.org/cheese/"> > > <!-- the JBI container --> > <sm:container spring:id="jbi" useMBeanServer="false" > createMBeanServer="false" dumpStats="true" statsInterval="10"> > > <sm:activationSpecs> > > <!-- Route the event to a trace component that just outputs > the event to the console --> > <sm:activationSpec componentName="trace" service="my:trace"> > <sm:component> > <bean xmlns="http://xbean.org/schemas/spring/1.0" > > class="org.servicemix.components.util.TraceComponent" /> > </sm:component> > </sm:activationSpec> > > > <sm:activationSpec componentName="myJmsReceiver" > service="my:myJmsReceiver" destinationService="my:trace" > failIfNoDestinationEndpoint="false"> > <sm:component><bean > class="org.servicemix.components.jms.JmsReceiverComponent"> > <property name="template"> > <bean class="org.springframework.jms.core.JmsTemplate102"> > <property name="connectionFactory"> > <ref local="jmsQueueConnectionFactory"/> > </property> > <property name="defaultDestination"> > <ref bean="orderQueue"/> > </property> > <property name="pubSubDomain" value="false"/> > <!--<property name="receiveTimeout"> > <value>20000</value> > </property>--> > </bean> > </property> > </bean></sm:component> > </sm:activationSpec> > > <!-- --> > > > </sm:activationSpecs> > </sm:container> > > <!-- JMS Queue Connection Factory --> > <!-- --> > <bean id="jmsQueueConnectionFactory" > class="org.springframework.jndi.JndiObjectFactoryBean"> > <property name="jndiTemplate"> > <ref bean="jndiTemplate"/> > </property> > <property name="jndiName"> > <value>UIL2ConnectionFactory</value> > </property> > </bean> > <!-- --> > <!-- JNDI Template --> > <!-- --> > <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> > <property name="environment"> > <props> > <prop key="java.naming.factory.initial"> > org.jnp.interfaces.NamingContextFactory > </prop> > <prop key="java.naming.provider.url"> > localhost > </prop> > <prop key="java.naming.factory.url.pkgs"> > org.jnp.interfaces:org.jboss.naming > </prop> > </props> > </property> > </bean> > <!-- --> > <!-- JMS Send destination --> > > <bean id="orderQueue" > class="org.springframework.jndi.JndiObjectFactoryBean"> > <property name="jndiTemplate"> > <ref bean="jndiTemplate"/> > </property> > <property name="jndiName"> > <value>queue/OrderQueue</value> > </property> > </bean> > > </beans> > > ----------- jms-sm.xml - END ------------------------- > > 2006-04-09 22:02:14,953 ERROR [org.jboss.deployment.MainDeployer] could > not create deployment: > file:/C:/Development/liferay/ext/servers/jboss-tomcat/server/default/deploy/jms-sm.xml > org.jboss.deployment.DeploymentException: ServiceMix deployer unable to > deploy: [EMAIL PROTECTED] { > url=file:/C:/Development/liferay/ext/servers/jboss-tomcat/server/default/deploy/jms-sm.xml > } > deployer: [EMAIL PROTECTED] > status: null > state: CREATE_DEPLOYER > watch: > file:/C:/Development/liferay/ext/servers/jboss-tomcat/server/default/deploy/jms-sm.xml > altDD: null > lastDeployed: 1144620134109 > lastModified: 1144620134078 > mbeans: > ; - nested throwable: (RuntimeMBeanException: null Cause: > org.springframework.beans.factory.BeanCreationException: Error creating > bean with name > 'org.servicemix.components.jms.JmsReceiverComponent#c1c428' defined in > URL > [file:/C:/Development/liferay/ext/servers/jboss-tomcat/server/default/deploy/jms-sm.xml]: > Initialization of bean failed; nested exception is > javax.jms.IllegalStateException: The MessageConsumer is closed) > at > org.servicemix.jboss.deployment.JBIDeployer.create(JBIDeployer.java:111) > at org.jboss.deployment.MainDeployer.create(MainDeployer.java:918) > at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:774) > at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:738) > at sun.reflect.GeneratedMethodAccessor47.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:324) > at > org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141) > at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80) > at > org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:121) > at org.jboss.mx.server.Invocation.invoke(Invocation.java:74) > at > org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127) > at org.jboss.mx.server.Invocation.invoke(Invocation.java:74) > at > org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249) > at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644) > at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177) > at $Proxy8.deploy(Unknown Source) > at > org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:325) > at > org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:483) > at > org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:204) > at > org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:215) > at > org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:194) > Caused by: RuntimeMBeanException: null Cause: > org.springframework.beans.factory.BeanCreationException: Error creating > bean with name > 'org.servicemix.components.jms.JmsReceiverComponent#c1c428' defined in > URL > [file:/C:/Development/liferay/ext/servers/jboss-tomcat/server/default/deploy/jms-sm.xml]: > Initialization of bean failed; nested exception is > javax.jms.IllegalStateException: The MessageConsumer is closed > at > org.jboss.mx.interceptor.ReflectedDispatcher.handleInvocationExceptions(ReflectedDispatcher.java:162) > at > org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:149) > at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80) > at org.jboss.mx.server.Invocation.invoke(Invocation.java:72) > at > org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249) > at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644) > at > org.servicemix.jboss.deployment.JBIDeployer.create(JBIDeployer.java:105) > ... 21 more > Caused by: org.springframework.beans.factory.BeanCreationException: > Error creating bean with name > 'org.servicemix.components.jms.JmsReceiverComponent#c1c428' defined in > URL > [file:/C:/Development/liferay/ext/servers/jboss-tomcat/server/default/deploy/jms-sm.xml]: > Initialization of bean failed; nested exception is > javax.jms.IllegalStateException: The MessageConsumer is closed > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:370) > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBeanDefinition(BeanDefinitionValueResolver.java:147) > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:96) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.resolveConstructorArguments(AbstractAutowireCapableBeanFactory.java:705) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:611) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:329) > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBeanDefinition(BeanDefinitionValueResolver.java:147) > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:96) > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:193) > at > org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:109) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1012) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:823) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:345) > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:226) > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:147) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:275) > at > org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:318) > at > org.xbean.spring.context.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:158) > at > org.xbean.spring.context.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:105) > at > org.servicemix.jboss.deployment.JBIService.installServiceMixXml(JBIService.java:157) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:324) > at > org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141) > ... 26 more > Caused by: javax.jms.IllegalStateException: The MessageConsumer is closed > at > org.jboss.mq.SpyMessageConsumer.setMessageListener(SpyMessageConsumer.java:211) > at > org.servicemix.components.jms.JmsReceiverComponent.afterPropertiesSet(JmsReceiverComponent.java:54) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1058) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:363) > ... 50 more > > > >
