[jboss-jira] [JBoss JIRA] (AS7-2968) @PreUpdate entity callback not running in caller's context when Container Managed Transactions are used

jaikiran pai (Assigned) (JIRA) jira-events at lists.jboss.org
Fri Dec 9 10:40:41 EST 2011


     [ https://issues.jboss.org/browse/AS7-2968?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

jaikiran pai reassigned AS7-2968:
---------------------------------

    Assignee: Scott Marlow  (was: jaikiran pai)


Scott, assigning this to you since you have been discussing this with jw in the forums. Let me know if this turns out to be some EJB interceptor issue.
                
> @PreUpdate entity callback not running in caller's context when Container Managed Transactions are used
> -------------------------------------------------------------------------------------------------------
>
>                 Key: AS7-2968
>                 URL: https://issues.jboss.org/browse/AS7-2968
>             Project: Application Server 7
>          Issue Type: Bug
>          Components: EJB, JPA / Hibernate
>    Affects Versions: 7.1.0.Beta1
>            Reporter: jw
>            Assignee: Scott Marlow
>
> If an Entity Bean has a @PreUpdate listener, the listener is not called in the context of the caller (session bean) in case of Container Managed Transactions.
> As a result, an jndi lookup in the callback for 'java:comp/EJBContext' returns always null. The @PreUpdate callback should run in the context of the caller.
> {noformat}
> @Entity
> @EntityListeners({ MyListener.class })
> public class MyEntity {
> ... 
> }
> {noformat}
> {noformat}
> public class MyListener {
>  
>     @PreUpdate
>     @PrePersist
>     public void onEntityCallback(Object entity) {
>           EJBContext ctx;
>  
>           ctx = createInitialContext().lookup("java:comp/EJBContext");
>           System.out.println(ctx.getCallerPrincipal().getName());
>     }
> }
> {noformat}
> {noformat}
> @Stateless
> public class MyServiceBean implements MyServiceRemote {
>     @Override
>     public void updateEntity(MyEntity entity) {
>         entityManager.merge(entity);
>     }
> }
> {noformat}
> This listener works fine on @PrePersist (Container- and Bean Managed Transactions) but fails on @PreUpdate with a NullPointerException if container managed transactions are used.
> Workaround: use User Transactions instead of Container Managed Transactions 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list