Example: Work object

The following is an example of a work object that dynamically subscribes to a topic:

class SampleWork implements Work
{
	boolean released;
	Topic targetTopic;
	EventSource es;
	TopicConnectionFactory tcf;
	public SampleWork(TopicConnectionFactory tcf, EventSource es, Topic targetTopic)
	{
		released = false;
		this.targetTopic = targetTopic;
		this.es = es;
		this.tcf = tcf;
	}
	synchronized boolean getReleased()
	{
		return released;
	}
	public void run()
	{
			try {
 		// setup our JMS stuff.
		TopicConnection tc = tcf.createConnection();
		TopicSession sess = tc.createSession(false, Session.AUTOACK);
		tc.start();

		MessageListener proxy = es.getEventTrigger(MessageListener.class, false);
		while(!getReleased())
		{
			// block for up to 5 seconds.
			Message msg = sess.receiveMessage(5000);
			if(msg != null)
			{
            // fire an event when we get a message
            proxy.onMessage(msg);
        }
		}
		tc.close();
			} catch (JMSException ex)
			{
     			// handle the exception here 
     			throw ex;
			}
			finally
			{
     			if (tc != null)
     			{
        			try{ 
          			tc.close();
         			} catch (JMSExceptin ex1) 
          			{ // handle exception }
       			}
      			}        
			}
	// called when we want to stop the Work object.
	public synchronized void release()
	{
		released = true;
	}
	}

As a result, any component that has access to the event source can add an event on demand, which allows components to subscribe to a topic in a more scalable way than by simply giving each client subscriber its own thread. The previous example is fully explored in the WebSphere Trader Sample. See your Samples Gallery for details.


Related concepts
Samples Gallery
Related tasks
Developing work objects to run code in parallel



Searchable topic ID:   xasb_workobject
Last updated: Jun 21, 2007 8:07:48 PM CDT    WebSphere Business Integration Server Foundation, Version 5.0.2
http://publib.boulder.ibm.com/infocenter/wasinfo/index.jsp?topic=/com.ibm.wasee.doc/info/ee/asyncbns/xmp/xasb_workobject.html

Library | Support | Terms of Use | Feedback