WAS v8.5 > Reference > Developer examples

Example: Using connections with asynchronous beans

An asynchronous bean method can use the connections that its creating Java EE component obtained using java:comp resource references.

For more information on resource references, refer to the References topic. The following is an example of 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 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 of an asynchronous bean that uses connections incorrectly:

class BadAsynchBean
{
 DataSource ds;
 // Do not do this. We 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...
 }}


Related concepts:

Asynchronous beans
References in application deployment descriptor files


Related


Use asynchronous beans


+

Search Tips   |   Advanced Search