Björn Berg
2017-11-21 20:27:12 UTC
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
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