Escribí una pequeña prueba para comprender el comportamiento asincronizado en EJB3.1 usando la anotación @Asynchronous
. Parece que:Asynchronous EJB 3.1 methods and Transactions
Si el método existe en el mismo frijol como la persona que llama,
- llamada ya no está asynchronized.
- La transacción de la persona que llama se marca para retrotraer, si la transacción en el método asíncrono se revierte; su probablemente el efecto secundario de 1.
llamada Sin embargo, si existe el método asíncrono en otro bean, se espera que el comportamiento es decir, es asíncrona y la transacción de llamadas es independiente (método asíncrono tiene un comportamiento REQUIRES_NEW para la transacción). Esto es desconcertante para mí, ya que el comportamiento no es el mismo en ambos casos. ¿Alguien podría aclarar?
P.S. Entorno EJB 3.1, JBoss 6
¿Está llamando al método usando 'SessionContext # getBusinessObject (clase)' en lugar de usar la palabra clave 'this'? (la diferencia se explica [aquí] (http://stackoverflow.com/questions/3381002/how-is-the-return-value-of-sessioncontext-getbusinessobject-different-from-thi/3384128#3384128)) – stratwine
@ stratwine Casi con seguridad el problema, simplemente lo convertiría en una respuesta. –
@stratwine Tiene razón, por favor escriba sus comentarios en respuesta para que pueda aceptar – anergy