次のような JpaController クラスがあります。
public class JpaController
{
@Inject private EntityManager em;
@Transactional
public void create(Message msg)
{
em.persist(msg);
}
}
をインストールしてcom.google.inject.persist.PersistFilter
います (この時点では HTTP リクエストに参加していないため、フィルタリングはしていませんが、バックグラウンド スレッドです)。
私もインストールしますnew JpaPersistModule(PU)
EntityManager が正常に読み込まれたと思います (ただし、コードがその行に到達していないため、これについては確信が持てません)。
スローされる例外は、インターセプターからのものです@Transactional
java.lang.NullPointerException
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.getActivePersistenceContext(EntityManagerImpl.java:1712)
at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.begin(EntityTransactionImpl.java:49)
at com.google.inject.persist.jpa.JpaLocalTxnInterceptor.invoke(JpaLocalTxnInterceptor.java:62)
at my code - the line that called controller.create(msg);
使用したライブラリ: EclipseLink 2.4.1、guice 3.0、guice-persist 3.0、guice-jndi 3.0、guice-servlet 3.0、MySQL 5.1.25、javax.persistence 2.0.4、Jackson、activemq、lombok、joda-time、javax。メール、javax.inject、asm、jersey、log4j、jettison、jsr311。