@Async and tx works fine on trunk, your issue should be different, maybe the fact your entitymanager is not a jta one.
*Romain Manni-Bucau* *Twitter: @rmannibucau <https://twitter.com/rmannibucau>* *Blog: **http://rmannibucau.wordpress.com/*<http://rmannibucau.wordpress.com/> *LinkedIn: **http://fr.linkedin.com/in/rmannibucau* *Github: https://github.com/rmannibucau* 2013/7/1 zeeman <[email protected]> > Hi, > > I have the following 2 classes. I get TransactionRequiredException only > when I have @Asynchronous on stateless EJB. If I remove the annotation, > everything works. I'm on Tomee 1.6 snapshot from a couple of weeks ago. > > Is this related to a bug in @Asynchronous? Or because I load info object in > a non-EJB class, then try to use it in stateless EJB? Or something else? > > > @ViewScoped > @Named > public class EditInfoComponent{ > > @Inject > private AsyncQueryProcessor asyncQuery; > > @Inject > private EntityManager entityManager; > > @Transactional //from Deltaspike > public void handleChanges(){ > //get info from entityManager > asyncQuery.sendNotifications(info); > } > } > > > @Stateless > public class AsyncQueryProcessor implements Serializable { > > @PersistenceContext(unitName = PersistenceConfiguration.UNIT_NAME) > private EntityManager entityManager; > > @Asynchronous //works with this annotation removed > public void sendNotifications(Info info){ > > if (info.isNew()){ > Notification notif = new Notification(); > entityManager.persist(notif); > }else{ > Notification notif = > entityManager.find(Notification.class, info.getNotificationId()); > notif.setSomeFlags(true); > entityManager.merge(notif); //get > TransactionRequiredException > } > } > } > > A class to produce EntityManager: > > public class PersistenceConfiguration implements Serializable { > @PersistenceUnit(unitName = UNIT_NAME) > private EntityManagerFactory entityManagerFactory; > > @Produces > @RequestScoped > @Default > public EntityManager createEntityManager() { > return entityManagerFactory.createEntityManager(); > } > > public void closeEntityManager(@Disposes final EntityManager em) { > if (em.isOpen()) > { > em.close(); > } > } > } > > > > -- > View this message in context: > http://openejb.979440.n4.nabble.com/Asynchronous-And-TransactionRequiredException-tp4664007.html > Sent from the OpenEJB User mailing list archive at Nabble.com. >
