1 package org
.argeo
.slc
.jms
;
3 import java
.net
.InetAddress
;
4 import java
.net
.UnknownHostException
;
7 import javax
.jms
.Destination
;
9 import org
.apache
.commons
.logging
.Log
;
10 import org
.apache
.commons
.logging
.LogFactory
;
11 import org
.argeo
.slc
.SlcException
;
12 import org
.argeo
.slc
.core
.runtime
.AbstractAgent
;
13 import org
.argeo
.slc
.process
.SlcExecution
;
14 import org
.argeo
.slc
.runtime
.SlcAgent
;
15 import org
.argeo
.slc
.runtime
.SlcAgentDescriptor
;
16 import org
.springframework
.beans
.factory
.DisposableBean
;
17 import org
.springframework
.beans
.factory
.InitializingBean
;
18 import org
.springframework
.jms
.core
.JmsTemplate
;
20 /** JMS based implementation of SLC Agent. */
21 public class JmsAgent
extends AbstractAgent
implements SlcAgent
,
22 InitializingBean
, DisposableBean
{
23 private final static Log log
= LogFactory
.getLog(JmsAgent
.class);
25 private final SlcAgentDescriptor agentDescriptor
;
26 private JmsTemplate jmsTemplate
;
27 private Destination agentRegister
;
28 private Destination agentUnregister
;
32 agentDescriptor
= new SlcAgentDescriptor();
33 agentDescriptor
.setUuid(UUID
.randomUUID().toString());
34 agentDescriptor
.setHost(InetAddress
.getLocalHost().getHostName());
35 } catch (UnknownHostException e
) {
36 throw new SlcException("Unable to create agent descriptor.", e
);
40 public void afterPropertiesSet() throws Exception
{
41 jmsTemplate
.convertAndSend(agentRegister
, agentDescriptor
);
42 log
.info("Agent #" + agentDescriptor
.getUuid() + " registered to "
46 public void destroy() throws Exception
{
47 jmsTemplate
.convertAndSend(agentUnregister
, agentDescriptor
);
48 log
.info("Agent #" + agentDescriptor
.getUuid() + " unregistered from "
52 public void newExecution(SlcExecution slcExecution
) {
53 log
.info("Execute SlcExecution :" + slcExecution
);
54 runSlcExecution(slcExecution
);
57 public void setJmsTemplate(JmsTemplate jmsTemplate
) {
58 this.jmsTemplate
= jmsTemplate
;
61 public void setAgentRegister(Destination agentRegister
) {
62 this.agentRegister
= agentRegister
;
65 public void setAgentUnregister(Destination agentUnregister
) {
66 this.agentUnregister
= agentUnregister
;
69 public String
getMessageSelector() {
70 return "slc-agentId=" + agentDescriptor
.getUuid();