|
How to control transaction from the client code |
|
|
Sometimes it is necessary for the client to start a transaction with which to execute EJB methods. In this scenario, the client has to propagate a transaction to the EJB container. To start a transaction in the client layer, first create an instance of the JNDI context and use it to acquire a UserTransaction instance. This trick should only be used with session or BMP beans.
The EJB to be used should not declare its transaction level to be RequiresNew, Never, or NotSupported; anything else will work correctly (Required, Supports, or Mandatory).
public class BeanClient {
public static void main(String[] args) {
// first configure and retreive initial context:
Properties props = new Properties();
...
Context context = new InitialContext(props);
// get the user transaction instance:
UserTransaction transaction = (UserTransaction)
context.lookup("java:comp/env/UserTransaction");
// perform transaction:
try {
transaction.begin();
// do something with beans:
...
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}
}
}
|
Related Tips
|
Page 1 of 0 ( 0 comments )
You can share your information about this topic using the form below!
Please do not post your questions with this form! Thanks.