2013-02-04 14 views
5

Che cos'è il corretto come metodo per ripristinare la transazione di una transazione JTA gestita dal contenitore?Come eseguire il rollback della transazione JTA correttamente?

Ho capito: EJBException when calling entityManager.getTransaction() che non riesco a ottenere l'istanza della transazione. Ho letto una soluzione here ma non sono sicuro che sia corretta.

Sono anche consapevole del fatto che, se lancio un'eccezione, la transazione verrà annullata.

Ma la mia domanda è: se voglio (devo) utilizzare un container gestito EntityManager, qual è il modo corretto di ripristinare una transazione al suo interno?

risposta

7

L'asnwer sul codice Ranch è giusto, è necessario utilizzare SessionContext

@Resource 
private SessionContext ctx; 

//and then in method 
if(fail) { 
    ctx.setRollBackOnly(); 
} 

Vedi anche questo article.

Problemi correlati