[jboss-svn-commits] JBL Code SVN: r6812 - labs/jbossesb/workspace/eschifman/trunk/product/core/listeners/src/org/jboss/soa/esb/message/listeners
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Oct 15 19:25:10 EDT 2006
Author: estebanschifman
Date: 2006-10-15 19:25:08 -0400 (Sun, 15 Oct 2006)
New Revision: 6812
Modified:
labs/jbossesb/workspace/eschifman/trunk/product/core/listeners/src/org/jboss/soa/esb/message/listeners/ActionProcessingPipeline.java
labs/jbossesb/workspace/eschifman/trunk/product/core/listeners/src/org/jboss/soa/esb/message/listeners/JmsQueueListener.java
Log:
Still under construction
Modified: labs/jbossesb/workspace/eschifman/trunk/product/core/listeners/src/org/jboss/soa/esb/message/listeners/ActionProcessingPipeline.java
===================================================================
--- labs/jbossesb/workspace/eschifman/trunk/product/core/listeners/src/org/jboss/soa/esb/message/listeners/ActionProcessingPipeline.java 2006-10-15 22:49:28 UTC (rev 6811)
+++ labs/jbossesb/workspace/eschifman/trunk/product/core/listeners/src/org/jboss/soa/esb/message/listeners/ActionProcessingPipeline.java 2006-10-15 23:25:08 UTC (rev 6812)
@@ -2,11 +2,9 @@
import java.lang.reflect.*;
-import javax.enterprise.deploy.spi.exceptions.ConfigurationException;
-
import org.apache.log4j.Logger;
-import org.jboss.remoting.samples.chat.exceptions.InvalidArgumentException;
+import org.jboss.soa.esb.ConfigurationException;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.actions.ActionUtils;
import org.jboss.soa.esb.helpers.ConfigTree;
@@ -28,7 +26,7 @@
* @param message Message - The initial message to be run through the action class chain
*/
public ActionProcessingPipeline(Message message)
- throws InvalidArgumentException, ConfigurationException
+ throws ConfigurationException
{
if (null==_message)
throw new IllegalArgumentException("Message must be not null");
@@ -38,7 +36,7 @@
throw new IllegalArgumentException("Configuration needed for action classes");
_actionList = _config.getChildren("action");
if (null==_actionList || _actionList.length<1)
- throw new ConfigurationException("No ");
+ throw new ConfigurationException("No actions in list");
}
/**
Modified: labs/jbossesb/workspace/eschifman/trunk/product/core/listeners/src/org/jboss/soa/esb/message/listeners/JmsQueueListener.java
===================================================================
--- labs/jbossesb/workspace/eschifman/trunk/product/core/listeners/src/org/jboss/soa/esb/message/listeners/JmsQueueListener.java 2006-10-15 22:49:28 UTC (rev 6811)
+++ labs/jbossesb/workspace/eschifman/trunk/product/core/listeners/src/org/jboss/soa/esb/message/listeners/JmsQueueListener.java 2006-10-15 23:25:08 UTC (rev 6812)
@@ -37,20 +37,61 @@
import org.jboss.soa.esb.ConfigurationException;
import org.jboss.soa.esb.helpers.AppServerContext;
import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.actions.ActionUtils;
import org.jboss.soa.esb.addressing.helpers.JMSEpr;
-public class JmsQueueListener
+/**
+ * Esb Message aware JMS queue listener.
+ * <p/> Expects an Object message whose getObject() method returns an org.jboss.soa.esb.message.Message
+ * <br/>Clones the 'static' ConfigTree with which this listener was created, and stores the cloned tree
+ * inside the Message (to enable all actions in the chain to use the configuration)
+ * <br/>Instantiates and runs a new ActionProcessingPipeline on the received esb Message (augmented with
+ * ConfigTree) that will in turn instantiate and run all action classes in the chain
+ *
+ * @author <a href="mailto:schifest at heuristica.com.ar">schifest at heuristica.com.ar</a>
+ * @since Version 4.0
+ */
+
+public class JmsQueueListener implements Runnable
{
public JmsQueueListener(EsbListenerController controller, ConfigTree config)
throws Exception
{
_controller = controller;
_config = config;
- _iSleepForThreads = 3;
+ _iSleepForRetry = 3;
checkMyParms();
- } // __________________________________
+ } // _______________________________
/**
+ * Loops until controlling process determines
+ * <br/>Waits for JMS Object messages containing ESB messages
+ * <br/>When one is received, instantiates an action processing pipeline to process it
+ * <br/>Pipeline is started in new Thread
+ */
+ public void run()
+ {
+ while (_controller.continueLooping())
+ {
+ org.jboss.soa.esb.message.Message message = receiveEsbMessage(_controller.millisToWait());
+ if (null!=message)
+ {
+ ActionUtils.setConfigTree(message,_config);
+ ActionProcessingPipeline chain = null;
+
+ try { chain = new ActionProcessingPipeline(message); }
+ catch (IllegalArgumentException e)
+ { _logger.error(e); continue; }
+ catch (ConfigurationException e)
+ { _logger.error(e); continue; }
+
+ // TODO Take care of thread pooling and (eventually) maximum child threads
+ new Thread(chain).start();
+ }
+ }
+ } // _______________________________
+
+ /**
* Check for mandatory and optional attributes in parameter tree
*
* @throws Exception -
@@ -100,7 +141,7 @@
catch (Exception e)
{
_logger.error("Reconnecting to Queue", e);
- try { Thread.sleep(_iSleepForThreads); }
+ try { Thread.sleep(_iSleepForRetry); }
catch (InterruptedException e1)
{ // Just return after logging
_logger.error("Unexpected thread interupt exception.", e);
@@ -162,7 +203,7 @@
protected QueueSession _oQsess;
protected Queue _oQueue;
protected String _sSelector;
- protected int _iSleepForThreads;
+ protected int _iSleepForRetry;
protected static transient Logger _logger = Logger.getLogger(JmsQueueListener.class);
}
More information about the jboss-svn-commits
mailing list