Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I punted and added my own nearly empty <code>ScheduledEventMessageComposer</code> and had my job extend <code>AbstractActionLifecycle</code></p> <p><code>jboss-esb.xml</code>:</p> <pre><code>&lt;?xml version="1.0"?&gt; &lt;jbossesb parameterReloadSecs="300" xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd"&gt; &lt;providers&gt; &lt;schedule-provider name="schedule"&gt; &lt;!-- fire every hour --&gt; &lt;cron-schedule cronExpression="0 1 * * * ?" scheduleid="cron-trigger"/&gt; &lt;/schedule-provider&gt; &lt;/providers&gt; &lt;services&gt; &lt;service category="dummy" description="create dummy message" name="dummy-message"&gt; &lt;listeners&gt; &lt;scheduled-listener event-processor="org.example.ActionMsgComposer" name="cron-schedule-listener" scheduleidref="cron-trigger"/&gt; &lt;/listeners&gt; &lt;actions mep="OneWay"&gt; &lt;action class="org.example.CronAction" name="action" process="execute"/&gt; &lt;/actions&gt; &lt;/service&gt; &lt;/services&gt; &lt;/jbossesb&gt; </code></pre> <p><code>org.example.ActionMsgComposer</code>:</p> <pre><code>package org.example; import org.jboss.soa.esb.ConfigurationException; import org.jboss.soa.esb.helpers.ConfigTree; import org.jboss.soa.esb.listeners.ScheduledEventMessageComposer; import org.jboss.soa.esb.message.Message; import org.jboss.soa.esb.message.format.MessageFactory; import org.jboss.soa.esb.message.format.MessageType; import org.jboss.soa.esb.schedule.SchedulingException; public class ActionMsgComposer implements ScheduledEventMessageComposer { public void initialize(ConfigTree config) throws ConfigurationException { } public void uninitialize() { } public Message composeMessage() throws SchedulingException { Message myMessage = MessageFactory.getInstance().getMessage(MessageType.JBOSS_XML); myMessage.getBody().add("dummy"); return myMessage; } public Message onProcessingComplete(Message message) throws SchedulingException { return message; } } </code></pre> <p><code>org.example.CronAction</code>:</p> <pre><code>package org.example; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.util.Collection; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.regex.Pattern; import org.jboss.soa.esb.actions.AbstractActionLifecycle; import org.jboss.soa.esb.actions.ActionLifecycleException; import org.jboss.soa.esb.helpers.ConfigTree; import org.jboss.soa.esb.message.Message; public class CronAction extends AbstractActionLifecycle { private ConfigTree configTree; private boolean initialized = false; private final Lock initLock = new ReentrantLock(true); private final Condition initCondition = initLock.newCondition(); public CronAction(ConfigTree config) { configTree = config; } public ConfigTree getConfigTree() { return configTree; } @Override public void initialise() throws ActionLifecycleException { try { initLock.lock(); super.initialise(); // ** do any one-time initialization for cron job here ** initialized = true; initCondition.signalAll(); } finally { initLock.unlock(); } } public Message exec(Message message) { waitUntilInitialized(); // ** do cron job here ** return message; } @Override public void destroy() throws ActionLifecycleException { super.destroy(); // ** do any clean-up for cron job here ** } private void waitUntilInitialized() { if (!initialized) { try { initLock.lock(); while (!initialized) { initCondition.await(); } } catch (InterruptedException e) { // ignore } finally { initLock.unlock(); } } } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload