Using asynchronous beans

The asynchronous beans feature adds a new set of APIs that enable Java Platform, Enterprise Edition (Java EE) applications to run asynchronously inside an Integration Server.

About this task

This topic provides a brief overview of the tasks that are involved in using asynchronous beans. For a more detailed description of the asynchronous beans model, refer to the Asynchronous beans conceptual topic. For detailed information on the programming model for supported asynchronous beans interfaces refer to the Work managers topic.

Procedure

  1. Configure work managers.
  2. Configure timer managers.
  3. Assemble applications that use asynchronous beans work managers.
  4. Develop work objects to run code in parallel.
  5. Develop event listeners.
  6. Develop asynchronous scopes.

Example

An asynchronous bean method can use the connections that its creating Java Platform, Enterprise Edition (Java EE) component obtained using java:comp resource references.

Using connections with asynchronous beans: The following code examples illustrates how to use connections correctly and incorrectly.

This code example illustrates an asynchronous bean that uses connections correctly:

class GoodAsynchBean
{
	DataSource ds;
	public GoodAsynchBean()
		throws NamingException
	{
		// ok to cache a connection factory or datasource
		// as class instance data.
		InitialContext ic = new InitialContext();
		// it is assumed that the created Java EE component has this
		// resource reference defined in its deployment descriptor.
		ds = (DataSource)ic.lookup("java:comp/env/jdbc/myDataSource");
	}
	// When the asynchronous bean method is called, get a connection,
	//  use it, then close it.
	void anEventListener()
	{
		Connection c = null;
		try
		{
			c = ds.getConnection();
			// use the connection now...
		}
		finally
		{
			if(c != null) c.close();
		}
	}
}

The following example illustrates an asynchronous bean that uses connections incorrectly:

class BadAsynchBean
{
	DataSource ds;
	// Do not do this. You cannot cache connections across asynch method calls.
	Connection c;

	public BadAsynchBean()
		throws NamingException
	{
		// ok to cache a connection factory or datasource as
		// class instance data.
		InitialContext ic = new InitialContext();
		ds = (DataSource)ic.lookup("java:comp/env/jdbc/myDataSource");
		// here, you broke the rules...
		c = ds.getConnection();
	}
	// Now when the asynch method is called, illegally use the cached connection
	// and you likely see J2C related exceptions at run time.
	// close it.
	void someAsynchMethod()
	{
		// use the connection now...
	}
}



In this information ...


IBM Redbooks, demos, education, and more

(Index)

Use IBM Suggests to retrieve related content from ibm.com and beyond, identified for your convenience.

This feature requires Internet access.

Task topic Task topic    

Terms of Use | Feedback

Last updatedLast updated: Sep 19, 2011 7:16:32 PM CDT
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=matt&product=was-express-iseries&topic=tasb_epasb
File name: tasb_epasb.html