2016-03-30 10 views
1

Ich habe einen JPA EntityListener, in dem ich den gleichen JNDI-Lookup für machte "java: comp/EJBContext" in beiden @PrePersist und @PreUpdate Callback-Methoden. Während die Suche während der Rückrufmethode @PrePersist erfolgreich ist, schlägt sie während der Rückrufmethode @PreUpdate fehl.EJB Kontext JNDI Lookup-Fehler innerhalb EntityListener des @PreUpdate

Ich benutze Hibernate 4.2.19.Final und eine Websphere AS 8.5.5.3 Build cf031430.01 (Java EE 6/EJB 3.1/JPA 2.0).

Der Code ist ganz einfach:

public class AuditedEntityListener { 

    private static final Logger LOGGER = LoggerFactory.getLogger(AuditedEntityListener.class); 

    private static final String STANDARD_EJB_CONTEXT_NAME = "java:comp/EJBContext"; 

    SessionContext lookupSessionContext() { 
    try { 
     return InitialContext.doLookup(STANDARD_EJB_CONTEXT_NAME); 
    } catch (NamingException ne) { 
     LOGGER.error("Lookup failure", ne); 
     return null; 
    } 
    } 

    @PrePersist 
    void prePersist(IAuditedEntity entity) { 
    lookupSessionContext(); 
    } 

    @PreUpdate 
    void preUpdate(IAuditedEntity entity) { 
    lookupSessionContext(); 
    } 

} 

Hier ist die Spur:

javax.naming.NameNotFoundException: Name "comp/EJBContext" nicht im Kontext "java:" gefunden. unter com.ibm.ws.naming.ipbase.NameSpace.lookupInternal (NameSpace.java:1229) ~ [com.ibm.ws.runtime.jar: na] unter com.ibm.ws.naming.ipbase.NameSpace .lookup (NameSpace.java:1142) ~ [com.ibm.ws.runtime.jar: na] um com.ibm.ws.naming.urlbase.UrlContextImpl.lookupExt (UrlContextImpl.java:1436) ~ [com .ibm.ws.runtime.jar: na] unter com.ibm.ws.naming.java.javaURLContextImpl.lookupExt (javaURLContextImpl.java:477) ~ [com.ibm.ws.runtime.jar: na] unter com.ibm.ws.naming.java.javaURLContextRoot.lookupExt (javaURLContextRoot.java:485) ~ [com.ibm.ws.runtime.jar: na] um com.ibm.ws.naming.java.javaURLContextRoot.lookup (javaURLContextRoot.java:370) ~ [ com.ibm.ws.runtime.jar: na] um org.apache.aries.jndi.DelegateContext.lookup (DelegateContext.java:161) ~ [na: na] um javax.naming.InitialContext.lookup (InitialContext .java: 422) ~ [na: 1.7.0] bei javax.naming.InitialContext.doLookup (InitialContext.java:295) ~ [na: 1.7.0] bei my.AuditedEntityListener.lookupSessionContext (AuditedEntityListener.java : 29) [Klassen /: Na] bei my.AuditedEntityListener.getUserName (AuditedEntityListener.java:34) [Klassen /: Na] bei my.AuditedEntityListener.preUpdate (AuditedEntityListener.java:74) [Klassen /: na] bei sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Me thod) ~ [na: 1.7.0] bei sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:94) ~ [na: 1.7.0] bei sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:55) ~ [na: 1.7.0] bei java.lang.reflect.Method.invoke (Method.java:619) ~ [na: 2.6 (04-09-2014)] um org.hibernate.ejb.event .ListenerCallback.invoke (ListenerCallback.java:48) [Hibernate-Entitymanager-4.2.19.Final.jar: 4.2.19.Final] um org.hibernate.ejb.event.EntityCallbackHandler.callback (EntityCallbackHandler.java:110) [hibernate-entitymanager-4.2.19.Final.jar: 4.2.19.Final] um org.hibernate.ejb.event.EntityCallbackHandler.preUpdate (EntityCallbackHandler.java:95) [Hibernate-Entitymanager-4.2.19.Final.jar: 4.2.19.Final] um org.hibernate.ejb.event.EJB3FlushEntityEventListener.invokeInterceptor (EJB3FlushEntityEventListener.java:65) [Hibernate-Entitymanager-4.2.19. Final.jar: 4.2.19.Final] unter org.hibernate.event.internal.DefaultFlushEntityEventListener.handleInterception (DefaultFlushEntityEventListener.java:334) [Hibernate-Core-4.2.19.Final.jar: 4.2.19.Abschließend] um org.hibernate.event.internal.DefaultFlushEntityEventListener.scheduleUpdate (DefaultFlushEntityEventListener.java:285) [Hibernate-Core-4.2.19.Final.jar: 4.2.19.Final] um org.hibernate.event. internal.DefaultFlushEntityEventListener.onFlushEntity (DefaultFlushEntityEventListener.java:165) [Hibernate-core-4.2.19.Final.jar: 4.2.19.Final] bei org.hibernate.event.internal.AbstractFlushingEventListener.flushEntities (AbstractFlushingEventListener.java: 230) [Hibernate-Core-4.2.19.Final.jar: 4.2.19.Final] um org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExuctions (AbstractFlushingEventListener.java:100) [Hibernate-Core-4.2. 19.Final.jar: 4.2.19.Final] unter org.hibernate.event.interna l.DefaultFlushEventListener.onFlush (DefaultFlushEventListener.java:55) [Hibernate-Core-4.2.19.Final.jar: 4.2.19.Final] um org.hibernate.internal.SessionImpl.flush (SessionImpl.java:1195) [Hibernate-Core-4.2.19.Final.jar: 4.2.19.Final] um org.hibernate.internal.SessionImpl.managedFlush (SessionImpl.java:404) [Hibernate-Core-4.2.19. Final. jar: 4.2.19.Final] unter org.hibernate.engine.transaction.synchronization.internal.SynchronizationCallbackCoordinatorNonTrackingImpl.beforeCompletion (SynchronisationCallbackCoordinatorNonTrackingImpl.java:109) [hibernate-core-4.2.19.Final.jar: 4.2.19. Finale] um org.hibernate.engine.transaction.synchronization.internal.RegisteredSynchronization.beforeCompletion (RegisteredSynchronization.java:53) [Hibernate-Core-4.2.19.Final.jar: 4.2.19.Final] um com.ibm.tx.jta.impl.RegisteredSyncs.coreDistributeBefore (RegisteredSyncs.java:291) [com.ibm.tx. jta.jar: na] um com.ibm.ws.tx.jta.RegisteredSyncs.distributeBefore (RegisteredSyncs.java:153) [com.ibm.ws.runtime.jar: na] unter com.ibm.ws. tx.jta.TransactionImpl.prePrepare (TransactionImpl.java:2382) [com.ibm.ws.runtime.jar: na] um com.ibm.ws.tx.jta.TransactionImpl.stage1CommitProcessing (TransactionImpl.java:586) [com.ibm.ws.runtime.jar: na] um com.ibm.tx.jta.impl.TransactionImpl.processCommit (TransactionImpl.java:1028) [com.ibm.tx.jta.jar: na] unter com.ibm.tx.jta.impl.TransactionImpl.commit (Tr ansactionImpl.java:962) [com.ibm.tx.jta.jar: na] um com.ibm.ws.tx.jta.TranManagerImpl.commit (TranManagerImpl.java:439) [com.ibm.ws. runtime.jar: na] um com.ibm.tx.jta.impl.TranManagerSet.commit (TranManagerSet.java:191) [com.ibm.tx.jta.jar: na] um com.ibm.ejs. csi.TranStrategy.commit (TranStrategy.java:949) [com.ibm.ws.runtime.jar: na] um com.ibm.ejs.csi.TranStrategy.postInvoke (TranStrategy.java:262) [com. ibm.ws.runtime.jar: na] um com.ibm.ejs.csi.TransactionControlImpl.postInvoke (TransactionControlImpl.java:567) [com.ibm.ws.runtime.jar: na] um com.ibm. ejs.container.EJSContainer.postInvoke (EJSContainer.java:4491) [com.ibm.ws.runtime.jar: na]

+1

Dies ist ein Produkt Einschränkung oder Fehler. Sie müssen ein PMR mit IBM öffnen. –

+1

Vielen Dank, Brett, wir haben einen PMR mit IBM auf Ihren Rat hin geöffnet und es war in der Tat ein Fehler. –

+0

Ich erinnere mich, dass ich an einer Reparatur bei IBM gearbeitet habe, also bin ich froh, dass es für dich zufriedenstellend gelöst werden konnte :-). –

Antwort

Verwandte Themen