Glassfish v3 で実行される Web アプリケーションがあります。これは JSF v2 と JPA で実現されます (したがって、JTA データ ソースとして宣言されている persistence.xml があります)。
JUnit でリポジトリをテストしようとすると、ルックアップに失敗し、次のエラーが表示されます。
javax.naming.NamingException: Lookup failed for 'java:comp/env/persistence/em' in SerialContext[myEnv=
java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory,
java.naming.factory.url.pkgs=com.sun.enterprise.naming,
java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl}
[Root exception is javax.naming.NamingException: Invocation exception: Got null ComponentInvocation ]
Glassfish の transaction-type="JTA" と競合するため、提供できない transaction-type="RESOURCE_LOCAL" を要求しているようです。
それで、私が聞きたいのは、Web アプリケーションの構成を [強く] 変更せずに JUnit を実行する方法を見つけることができるかどうかということです。ありがとう、AN