You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2006/02/21 12:57:23 UTC
svn commit: r379433 -
/incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsServiceComponent.java
Author: gnodet
Date: Tue Feb 21 03:57:18 2006
New Revision: 379433
URL: http://svn.apache.org/viewcvs?rev=379433&view=rev
Log:
JmsServiceComponent now asynchronously handles incoming message using a WorkManager
Modified:
incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsServiceComponent.java
Modified: incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsServiceComponent.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsServiceComponent.java?rev=379433&r1=379432&r2=379433&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsServiceComponent.java (original)
+++ incubator/servicemix/trunk/servicemix-components/src/main/java/org/apache/servicemix/components/jms/JmsServiceComponent.java Tue Feb 21 03:57:18 2006
@@ -15,6 +15,7 @@
*/
package org.apache.servicemix.components.jms;
+import javax.jbi.JBIException;
import javax.jbi.messaging.ExchangeStatus;
import javax.jbi.messaging.InOut;
import javax.jbi.messaging.MessageExchange;
@@ -28,10 +29,14 @@
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
+import javax.resource.spi.work.Work;
+import javax.resource.spi.work.WorkException;
+import javax.resource.spi.work.WorkManager;
import javax.xml.transform.TransformerException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.servicemix.components.util.ComponentSupport;
+import org.apache.servicemix.jbi.framework.ComponentContextImpl;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.jms.JmsException;
@@ -55,6 +60,7 @@
private ConnectionFactory connectionFactory;
private Connection connection;
private Session session;
+ private WorkManager workManager;
/**
* called by Spring framework after initialization
@@ -133,6 +139,14 @@
}
}
+ protected void init() throws JBIException {
+ if (workManager == null) {
+ ComponentContextImpl context = (ComponentContextImpl) getContext();
+ workManager = context.getWorkManager();
+ }
+ super.init();
+ }
+
/**
* @return Return the DestinationChooser
*/
@@ -199,11 +213,33 @@
this.selector = selector;
}
+ public WorkManager getWorkManager() {
+ return workManager;
+ }
+
+ public void setWorkManager(WorkManager workManager) {
+ this.workManager = workManager;
+ }
+
/**
* MessageListener implementation
* @param jmsMessage
*/
public void onMessage(final Message jmsMessage) {
+ try {
+ workManager.scheduleWork(new Work() {
+ public void release() {
+ }
+ public void run() {
+ handleMessage(jmsMessage);
+ }
+ });
+ } catch (WorkException e) {
+ log.error(e);
+ }
+ }
+
+ protected void handleMessage(final Message jmsMessage) {
try {
final InOut messageExchange = getDeliveryChannel().createExchangeFactory().createInOutExchange();
NormalizedMessage inMessage = messageExchange.createMessage();