[ 
https://issues.apache.org/jira/browse/OWB-1111?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15101724#comment-15101724
 ] 

Romain Manni-Bucau commented on OWB-1111:
-----------------------------------------

Using Synchronization semantic we should respect Synchronization behavior so 
register before a rollback but the issue is then the sender (fire()) needs to 
know it be used with JTA or not. All in between/fallback strategy seems to lead 
to hard to understand and surprising behavior to me.

> firing a during-transaction event fails if the tx is already rolled back or 
> not active
> --------------------------------------------------------------------------------------
>
>                 Key: OWB-1111
>                 URL: https://issues.apache.org/jira/browse/OWB-1111
>             Project: OpenWebBeans
>          Issue Type: Bug
>          Components: Java EE Integration
>    Affects Versions: 1.2.8, 1.6.2
>            Reporter: Mark Struberg
>            Assignee: Mark Struberg
>             Fix For: 1.6.3
>
>
> Consider you have an observer method like
> {code}
> public void 
> clearCacheAfterTx(@Observes(during=TransactionPhase.AFTER_COMPLETION) 
> ClearAfterTx payload) {...}
> {code}
> and you fire the event
> {code}
> clearCacheEvent.fire(new ClearCacheEvent());
> {code}
> In this case firing the event currently blows up if the underlying 
> transaction is already closed or rolled back. This happens because the 
> transaction spec states that you cannot register a tx Synchronisation in 
> certain states:
> https://docs.oracle.com/javaee/6/api/javax/transaction/Transaction.html#registerSynchronization%28javax.transaction.Synchronization%29



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to