package org.yajul.jta;
import org.yajul.jndi.JndiHelper;
import org.yajul.util.Callable;
import javax.annotation.Resource;
import javax.ejb.EJBContext;
import javax.ejb.Stateless;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;
import java.util.logging.Logger;
/**
* Test bean for transactions.
* <br>
* User: josh
* Date: 12/31/12
* Time: 6:36 PM
*/
@Stateless
@TransactionManagement(TransactionManagementType.BEAN)
public class JtaTestBean {
private static final Logger log = Logger.getLogger(JtaTestBean.class.getName());
@Resource
private EJBContext context;
public void transactionTemplateCheck() throws SystemException {
log.info("bindings=" + JndiHelper.listBindings(JndiHelper.getDefaultInitialContext(), ""));
if (context == null)
throw new IllegalStateException("EJB context is null!");
final UserTransaction utx = context.getUserTransaction();
if (utx == null)
throw new IllegalStateException("UserTransaction is null!");
if (TransactionStatusHelper.isInProgress(utx.getStatus()))
throw new IllegalStateException("UserTransaction is in progress! (1)");
UserTransactionTemplate template = new UserTransactionTemplate(utx);
template.doAction(new Callable<Object>() {
public Object call() throws Throwable {
if (!TransactionStatusHelper.isInProgress(utx.getStatus()))
throw new IllegalStateException("UserTransaction is NOT in progress!");
return null;
}
});
if (TransactionStatusHelper.isInProgress(utx.getStatus()))
throw new IllegalStateException("UserTransaction is in progress! (2)");
}
}