From b072c117f63f2bfc3ccdf1614bfbe03877ea15c1 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Wed, 11 Mar 2009 19:45:44 +0000 Subject: [PATCH] Finalize agents git-svn-id: https://svn.argeo.org/slc/trunk@2256 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../META-INF/spring/jms.xml | 14 ++++-- .../org.argeo.slc.demo.basic/conf/basic.xml | 5 +- .../org.argeo.slc.demo.basic/conf/main.xml | 2 +- .../conf/testCases/basic-001.xml | 2 +- .../main/java/org/argeo/slc/jms/JmsAgent.java | 41 +++++++++++++--- .../slc/jms/MarshallerMessageConverter.java | 17 +++++++ .../core/execution/DefaultModulesManager.java | 2 +- .../argeo/slc/core/runtime/AbstractAgent.java | 48 +++++++++++-------- .../bundles/logging/log4j.properties | 6 ++- .../META-INF/spring/activemq.xml | 14 +++--- .../org.argeo.slc.webapp.war/WEB-INF/web.xml | 2 +- server/org.argeo.slc.siteserver/pom.xml | 22 ++++----- 12 files changed, 117 insertions(+), 58 deletions(-) diff --git a/demo/site/org.argeo.slc.demo.agent/META-INF/spring/jms.xml b/demo/site/org.argeo.slc.demo.agent/META-INF/spring/jms.xml index b5f7d6719..c4163c20a 100644 --- a/demo/site/org.argeo.slc.demo.agent/META-INF/spring/jms.xml +++ b/demo/site/org.argeo.slc.demo.agent/META-INF/spring/jms.xml @@ -10,21 +10,25 @@ - - - - - + + + + + diff --git a/demo/site/org.argeo.slc.demo.basic/conf/basic.xml b/demo/site/org.argeo.slc.demo.basic/conf/basic.xml index a513e3f4f..2ef168634 100644 --- a/demo/site/org.argeo.slc.demo.basic/conf/basic.xml +++ b/demo/site/org.argeo.slc.demo.basic/conf/basic.xml @@ -34,7 +34,10 @@ - + + + + diff --git a/demo/site/org.argeo.slc.demo.basic/conf/main.xml b/demo/site/org.argeo.slc.demo.basic/conf/main.xml index 5d849311e..046b36990 100644 --- a/demo/site/org.argeo.slc.demo.basic/conf/main.xml +++ b/demo/site/org.argeo.slc.demo.basic/conf/main.xml @@ -35,7 +35,7 @@ + value="From main! @{testKey}" /> \ No newline at end of file diff --git a/demo/site/org.argeo.slc.demo.basic/conf/testCases/basic-001.xml b/demo/site/org.argeo.slc.demo.basic/conf/testCases/basic-001.xml index 7571fc957..c68414a9b 100644 --- a/demo/site/org.argeo.slc.demo.basic/conf/testCases/basic-001.xml +++ b/demo/site/org.argeo.slc.demo.basic/conf/testCases/basic-001.xml @@ -15,7 +15,7 @@ - + diff --git a/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAgent.java b/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAgent.java index 7623e79f0..6d79a662c 100644 --- a/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAgent.java +++ b/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAgent.java @@ -5,6 +5,9 @@ import java.net.UnknownHostException; import java.util.UUID; import javax.jms.Destination; +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageListener; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -16,10 +19,11 @@ import org.argeo.slc.runtime.SlcAgentDescriptor; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.jms.core.JmsTemplate; +import org.springframework.jms.support.converter.MessageConverter; /** JMS based implementation of SLC Agent. */ public class JmsAgent extends AbstractAgent implements SlcAgent, - InitializingBean, DisposableBean { + InitializingBean, DisposableBean, MessageListener { private final static Log log = LogFactory.getLog(JmsAgent.class); private final SlcAgentDescriptor agentDescriptor; @@ -27,6 +31,8 @@ public class JmsAgent extends AbstractAgent implements SlcAgent, private Destination agentRegister; private Destination agentUnregister; + private MessageConverter messageConverter; + public JmsAgent() { try { agentDescriptor = new SlcAgentDescriptor(); @@ -49,11 +55,6 @@ public class JmsAgent extends AbstractAgent implements SlcAgent, + agentUnregister); } - public void newExecution(SlcExecution slcExecution) { - log.info("Execute SlcExecution :" + slcExecution); - runSlcExecution(slcExecution); - } - public void setJmsTemplate(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; } @@ -66,7 +67,33 @@ public class JmsAgent extends AbstractAgent implements SlcAgent, this.agentUnregister = agentUnregister; } + public void onMessage(Message message) { + // FIXME: we filter the messages on the client side, + // because of a weird problem with selector since moving to OSGi + try { + if (message.getStringProperty("slc-agentId").equals( + agentDescriptor.getUuid())) { + runSlcExecution((SlcExecution) messageConverter + .fromMessage(message)); + } + } catch (JMSException e) { + throw new SlcException("Cannot convert message " + message, e); + } + + } + public String getMessageSelector() { - return "slc-agentId=" + agentDescriptor.getUuid(); + String messageSelector = "slc-agentId=" + agentDescriptor.getUuid() + + ""; + // String messageSelector = "slc-agentId LIKE '%'"; + if (log.isDebugEnabled()) + log.debug("Message selector: '" + messageSelector + "'"); + return messageSelector; + } + + public void setMessageConverter(MessageConverter messageConverter) { + this.messageConverter = messageConverter; } + + } diff --git a/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/MarshallerMessageConverter.java b/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/MarshallerMessageConverter.java index dfab1e4bf..88d40a426 100644 --- a/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/MarshallerMessageConverter.java +++ b/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/MarshallerMessageConverter.java @@ -1,10 +1,14 @@ package org.argeo.slc.jms; +import java.util.Enumeration; + import javax.jms.JMSException; import javax.jms.Message; import javax.jms.Session; import javax.jms.TextMessage; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.argeo.slc.SlcException; import org.springframework.jms.support.converter.MessageConversionException; import org.springframework.jms.support.converter.MessageConverter; @@ -14,12 +18,25 @@ import org.springframework.xml.transform.StringResult; import org.springframework.xml.transform.StringSource; public class MarshallerMessageConverter implements MessageConverter { + private final static Log log = LogFactory + .getLog(MarshallerMessageConverter.class); + private Marshaller marshaller; private Unmarshaller unmarshaller; public Object fromMessage(Message message) throws JMSException, MessageConversionException { + if (log.isTraceEnabled()) { + Enumeration names = message.getPropertyNames(); + while (names.hasMoreElements()) { + String name = names.nextElement(); + log.trace("JMS Property: " + name + "=" + + message.getObjectProperty(name)); + } + } + if (message instanceof TextMessage) { + String text = ((TextMessage) message).getText(); try { return unmarshaller.unmarshal(new StringSource(text)); diff --git a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/execution/DefaultModulesManager.java b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/execution/DefaultModulesManager.java index 75d94db02..ec53ca9af 100644 --- a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/execution/DefaultModulesManager.java +++ b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/execution/DefaultModulesManager.java @@ -48,7 +48,7 @@ public class DefaultModulesManager implements ExecutionModulesManager { } public void process(SlcExecution slcExecution) { - log.info("SlcExecution " + slcExecution); + log.info("##\n## Process SLC Execution " + slcExecution+"\n##"); for(RealizedFlow flow : slcExecution.getRealizedFlows()) { ExecutionModule module = getExecutionModule(flow.getModuleName(), diff --git a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/runtime/AbstractAgent.java b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/runtime/AbstractAgent.java index fc34d1f17..d3647b718 100644 --- a/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/runtime/AbstractAgent.java +++ b/runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/core/runtime/AbstractAgent.java @@ -5,6 +5,7 @@ import java.util.Properties; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.argeo.slc.execution.ExecutionModulesManager; import org.argeo.slc.process.SlcExecution; import org.argeo.slc.runtime.SlcApplication; import org.argeo.slc.runtime.SlcExecutionContext; @@ -12,30 +13,37 @@ import org.argeo.slc.runtime.SlcExecutionContext; public abstract class AbstractAgent { private final static Log log = LogFactory.getLog(AbstractAgent.class); - private SlcApplication slcApplication; +// private SlcApplication slcApplication; + + private ExecutionModulesManager modulesManager; protected void runSlcExecution(final SlcExecution slcExecution) { - // TODO: in a separate process - Thread thread = new Thread("SlcExecution " + slcExecution.getUuid()) { - public void run() { - Properties props = new Properties(); - Map attributes = slcExecution.getAttributes(); - for (String key : attributes.keySet()) { - props.setProperty(key, attributes.get(key)); - if (log.isTraceEnabled()) - log.trace(key + "=" + props.getProperty(key)); - } - slcApplication.execute(slcExecution, props, null, null); - log.debug("Thread for SLC execution #" + slcExecution.getUuid() - + " finished."); - } - }; - thread.start(); + modulesManager.process(slcExecution); +// Thread thread = new Thread("SlcExecution " + slcExecution.getUuid()) { +// public void run() { +// Properties props = new Properties(); +// Map attributes = slcExecution.getAttributes(); +// for (String key : attributes.keySet()) { +// props.setProperty(key, attributes.get(key)); +// if (log.isTraceEnabled()) +// log.trace(key + "=" + props.getProperty(key)); +// } +// slcApplication.execute(slcExecution, props, null, null); +// log.debug("Thread for SLC execution #" + slcExecution.getUuid() +// + " finished."); +// } +// }; +// thread.start(); } - public void setSlcApplication( - SlcApplication application) { - this.slcApplication = application; + public void setModulesManager(ExecutionModulesManager modulesManager) { + this.modulesManager = modulesManager; } + +// public void setSlcApplication( +// SlcApplication application) { +// this.slcApplication = application; +// } + } diff --git a/server/org.argeo.slc.siteserver/bundles/logging/log4j.properties b/server/org.argeo.slc.siteserver/bundles/logging/log4j.properties index bc1369290..3ee850471 100644 --- a/server/org.argeo.slc.siteserver/bundles/logging/log4j.properties +++ b/server/org.argeo.slc.siteserver/bundles/logging/log4j.properties @@ -6,7 +6,11 @@ log4j.logger.org.argeo.slc.execution.ExecutionParameterPostProcessor=TRACE log4j.logger.org.argeo.slc.execution.ExecutionContext=DEBUG log4j.logger.org.argeo.slc.execution.SimpleExecutionSpec=DEBUG -log4j.logger.org.springframework.osgi.web=WARN +log4j.logger.org.springframework=WARN + +log4j.logger.org.apache.activemq=WARN +log4j.logger.org.apache.activemq.transport=WARN +log4j.logger.org.apache.activemq.selector=WARN log4j.logger.org.apache.catalina=INFO log4j.logger.org.apache.coyote=INFO diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.activemq/META-INF/spring/activemq.xml b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.activemq/META-INF/spring/activemq.xml index c8c8846ed..6ea6b61c2 100644 --- a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.activemq/META-INF/spring/activemq.xml +++ b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.activemq/META-INF/spring/activemq.xml @@ -7,17 +7,19 @@ + Create embedded broker--> + + + + + + diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/web.xml b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/web.xml index ef74dca19..62d26b5a6 100644 --- a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/web.xml +++ b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.webapp.war/WEB-INF/web.xml @@ -109,7 +109,7 @@ org.apache.activemq.brokerURL - vm://localhost + tcp://localhost:61616 diff --git a/server/org.argeo.slc.siteserver/pom.xml b/server/org.argeo.slc.siteserver/pom.xml index 9c63fe7eb..a977a52e0 100644 --- a/server/org.argeo.slc.siteserver/pom.xml +++ b/server/org.argeo.slc.siteserver/pom.xml @@ -98,8 +98,7 @@ - + @@ -280,16 +279,11 @@ - + \ No newline at end of file -- 2.39.2