Hi,

I have tried to create a small application based on Meecrowave and JPA 
extension. But when I always try to persist an entity, it fails with a 
NullPointerException which I cannot really drill down to find the root cause.

First I thought injected EntityManager is null but logging the EntityManager 
call told me, that it really exists. PersistenceUnitInfoBuilder and DataSource 
is produced like described on
http://openwebbeans.apache.org/meecrowave/meecrowave-jpa/index.html 
<http://openwebbeans.apache.org/meecrowave/meecrowave-jpa/index.html>


The called InstrumentDao looks like this:
@ApplicationScoped
@Jpa(transactional = false)
public class InstrumentDao {
    @Inject
    @Unit(name = "depot")
    private EntityManager em;

    @Jpa
    public void save (Instrument instrument) {
        em.merge(instrument);
    }
  …
}

The entity Instrument is defined like this:
@Entity
@Table(name = "INSTRUMENT")
public class Instrument implements Serializable {
    @Id
    private String isin;
    private String name;

    public Instrument() {

    }
…
}

Stacktrace is like following:
Caused by: java.lang.NullPointerException
        at 
org.apache.meecrowave.jpa.internal.EntityManagerBean.destroy(EntityManagerBean.java:95)
 ~[meecrowave-jpa-1.1.0.jar:1.1.0]
        at 
org.apache.meecrowave.jpa.internal.EntityManagerBean.destroy(EntityManagerBean.java:29)
 ~[meecrowave-jpa-1.1.0.jar:1.1.0]
        at 
org.apache.webbeans.component.third.ThirdpartyBeanImpl.destroy(ThirdpartyBeanImpl.java:113)
 ~[openwebbeans-impl-2.0.1.jar:2.0.1]
        at 
org.apache.meecrowave.jpa.internal.EntityManagerContext$ThreadContext.doDestroy(EntityManagerContext.java:130)
 ~[meecrowave-jpa-1.1.0.jar:1.1.0]
        at 
org.apache.meecrowave.jpa.internal.EntityManagerContext$ThreadContext.lambda$exit$1(EntityManagerContext.java:140)
 ~[meecrowave-jpa-1.1.0.jar:1.1.0]
        at java.util.HashMap.forEach(HashMap.java:1280) ~[?:1.8.0_77]
        at 
org.apache.meecrowave.jpa.internal.EntityManagerContext$ThreadContext.exit(EntityManagerContext.java:140)
 ~[meecrowave-jpa-1.1.0.jar:1.1.0]
        at 
org.apache.meecrowave.jpa.internal.EntityManagerContext$ThreadContext.access$300(EntityManagerContext.java:94)
 ~[meecrowave-jpa-1.1.0.jar:1.1.0]
        at 
org.apache.meecrowave.jpa.internal.EntityManagerContext.exit(EntityManagerContext.java:52)
 ~[meecrowave-jpa-1.1.0.jar:1.1.0]
        at 
org.apache.meecrowave.jpa.internal.JpaInterceptorBase.inTransaction(JpaInterceptorBase.java:40)
 ~[meecrowave-jpa-1.1.0.jar:1.1.0]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[?:1.8.0_77]
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
~[?:1.8.0_77]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:1.8.0_77]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_77]
        at 
org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136)
 ~[openwebbeans-impl-2.0.1.jar:2.0.1]
        at 
org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:65)
 ~[openwebbeans-impl-2.0.1.jar:2.0.1]
        at 
org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:139)
 ~[openwebbeans-impl-2.0.1.jar:2.0.1]
        at 
org.kivio.depot.dao.InstrumentDao$$OwbInterceptProxy0.save(org/kivio/depot/dao/InstrumentDao.java)
 ~[?:?]
        at 
org.kivio.depot.dao.InstrumentDao$$OwbNormalScopeProxy0.save(org/kivio/depot/dao/InstrumentDao.java)
 ~[?:?]
        at 
org.kivio.depot.service.DepotService.addInstrument(DepotService.java:69) 
~[classes/:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[?:1.8.0_77]
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
~[?:1.8.0_77]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:1.8.0_77]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_77]

Someone can give me a hint what I am doing wrong?

Kind regards,
Björn

Reply via email to