Bonjour

Je développe une application avec Spring 2.5. L'application est déployée sous Tomcat 6. Pour des besoins de processus asynchrone et de communication avec d'autres applications j'utilise JMS grâce au Message Broker Active MQ 5.2.

Mon Broker Active MQ est embarqué dans mon application.

Voici ma configuration Spring :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
	<!-- a pooling based JMS provider -->
	<bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
		<property name="connectionFactory">
			<bean class="org.apache.activemq.ActiveMQConnectionFactory">
				<property name="brokerURL" value="vm://localhost:61616" />
			</bean>
		</property>
	</bean>
 
	<bean id="theQueue" class="org.apache.activemq.command.ActiveMQQueue">
		<constructor-arg index="0" value="theQueue" />
	</bean>
 
	<!-- Spring JMS Template -->
	<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
		<property name="defaultDestination" ref="theQueue" />
		<property name="connectionFactory" ref="jmsFactory" />
	</bean>
J'injecte ensuite mon jmsTemplate là où j'en ai besoin.

Déjà pourriez vous me dire si tout cela vous semble correct ?

Tout marche bien sauf à l'arrêt de Tomcat. Tomcat plante avec l'exception suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
 ERROR org.springframework.jms.listener.SimpleMessageListenerContainer - Encountered non-recoverable JMSException
javax.jms.JMSException: Peer (vm://localhost#1) disposed.
        at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49)
        at org.apache.activemq.ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1773)
        at org.apache.activemq.ActiveMQConnection.onException(ActiveMQConnection.java:1790)
        at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:99)
        at org.apache.activemq.transport.ResponseCorrelator.onException(ResponseCorrelator.java:114)
        at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:99)
        at org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:203)
        at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
        at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.activemq.transport.TransportDisposedIOException: Peer (vm://localhost#1) disposed.
        ... 6 more
6 mai 2009 17:35:46 org.apache.catalina.core.StandardService stop
INFO: Arr´+¢t du service Catalina
Exception in thread "AWT-Windows" java.lang.IllegalStateException: Shutdown in progress
        at java.lang.ApplicationShutdownHooks.add(ApplicationShutdownHooks.java:39)
        at java.lang.Runtime.addShutdownHook(Runtime.java:192)
        at sun.awt.windows.WToolkit.run(WToolkit.java:276)
        at java.lang.Thread.run(Thread.java:619)

Pourriez vous me guider vers la résolution de ce problème ?

Merci d'avance pour votre aide.