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.
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 ...Subtopics
Related information
| IBM Redbooks, demos, education, and more(Index) |