「arquillian-glassfish-embedded-3.1」コンテナー (1.0.0.CR3) を使用して、Arquillian (1.0.2.Final) を使用して実行される多くのテスト クラスがあります。
テスト クラスのいずれかを単独で実行すると、期待どおりに実行されます。複数のテスト クラス (TestSuite) を実行しようとすると、EJB をクラスに挿入する際に問題が発生します。
java.lang.RuntimeException: メンバーを注入できませんでした
原因: java.lang.IllegalStateException: リモート ejb-ref name=PackageManagerBean、Remote 3.x インターフェイス =com.dcp.pkg.PackageManager を注入しようとして例外がモジュール test、ejb-link=PackageManagerBean でアプリ内 EJB PackageManagerBean に解決されました,lookup=,mappedName=,jndi-name=PackageManagerBean,refType=クラス com.dcp.transmission.TransmissionManagerBeanTest へのセッション: SerialContext[myEnv={java.naming.factory. initial=com.sun.enterprise.naming.impl.SerialInitContextFactory、java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl、java.naming.factory.url.pkgs=com. sun.enterprise.naming}
原因: com.sun.enterprise.container.common.spi.util.InjectionException: リモート ejb-ref 名 = PackageManagerBean、リモート 3.x インターフェイス = com.dcp.pkg.PackageManager をアプリ内 EJB に解決しようとして例外が発生しましたモジュール test の PackageManagerBean、ejb-link=PackageManagerBean、lookup=、mappedName=、jndi-name=PackageManagerBean、refType=クラス com.dcp.transmission.TransmissionManagerBeanTest へのセッション: SerialContext の 'java:comp/env/PackageManagerBean' の検索に失敗しました[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java. Naming.factory.url.pkgs=com.sun.enterprise.naming}
原因: javax.naming.NamingException: 'java:comp/env/PackageManagerBean' の検索に失敗しました.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [ルート例外は javax.naming.NamingException: Exception 'Remote ejb-ref name=PackageManagerBean,Remote 3.x interface =com.dcp.pkg.PackageManager の解決中の Ejb は、モジュール テストでアプリ内 EJB PackageManagerBean に解決されました,ejb-link=PackageManagerBean,lookup=,mappedName=,jndi- name=PackageManagerBean,refType=Session' . ルックアップに使用される実際の (おそらく内部) リモート JNDI 名は「PackageManagerBean#com.dcp.pkg.PackageManager」です [ルート例外は javax.naming.NamingException:
原因: javax.naming.NamingException: 'Remote ejb-ref name=PackageManagerBean,Remote 3.x interface =com.dcp.pkg.PackageManager の Ejb を解決する例外がモジュール test,ejb-link= でアプリ内 EJB PackageManagerBean に解決されましたPackageManagerBean,lookup=,mappedName=,jndi-name=PackageManagerBean,refType=Session' . ルックアップに使用される実際の (おそらく内部の) リモート JNDI 名は「PackageManagerBean#com.dcp.pkg.PackageManager」です [ルート例外は javax.naming.NamingException です: SerialContext の「PackageManagerBean#com.dcp.pkg.PackageManager」のルックアップに失敗しました[ myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming .factory.url.pkgs=com.sun.enterprise.naming} [ルート例外は javax.naming.
原因: javax.naming.NamingException: Lookup failed for 'PackageManagerBean#com.dcp.pkg.PackageManager' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java .naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [ルート例外は javax.naming.NamingException です: リモート ビジネス インターフェイス com.dcp.pkg.PackageManager の ejb ref 解決エラー [ルート例外は java.lang.IllegalArgumentException: 引数の型が一致しません]]
原因: javax.naming.NamingException: リモート ビジネス インターフェイス com.dcp.pkg.PackageManager の ejb ref 解決エラー [ルート例外は java.lang.IllegalArgumentException: 引数の型が一致しません]
原因: java.lang.IllegalArgumentException: 引数の型が一致しません
パッケージ マネージャー Bean は次のように定義されます。
@Stateless(mappedName = "PackageManagerBean")
@Remote({ PackageManager.class })
@Local({ PackageManagerLocal.class })
public class PackageManagerBean implements PackageManager {
}
パッケージ マネージャーは、以下の例のように、いくつかのテスト クラスに挿入されます。
@RunWith(Arquillian.class)
public class TransmissionManagerBeanTest {
@Deployment
public static Archive<?> createDeployment() {
WebArchive war = ShrinkWrap.create(WebArchive.class, "test.war")
.addPackages(true, TransmissionManager.class.getPackage(), Search.class.getPackage(), PackageManager.class.getPackage(), SiteManagerBean.class.getPackage())
.addAsResource("test-persistence.xml", "META-INF/persistence.xml").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
return war;
}
@EJB
TransmissionManager transmissionManager;
@EJB
PackageManager packageManager;
@EJB
SiteManager siteManager;
@PersistenceContext
EntityManager entityManager;
@Inject
UserTransaction userTransaction;
}
他の EJB で問題が発生しているようには見えません。
問題の内容と、これを機能させる方法を知っている人はいますか?