いくつかの ejb および war モジュールを含む Maven マルチモジュール プロジェクトがあります。モジュールの 1 つは、プラットフォーム全体の統合テスターとして機能します。組み込みの EjbContainer を使用して、セキュリティ、依存性注入、およびトランザクションを含む ejb のテストに成功しました。
ここで、CDI をミックスに追加したいと考えていますが、ここで問題が発生します。
問題
ドキュメントによると、CDI を有効にするには、有効にする ejb モジュールのMETA-INFフォルダーに空のbeans.xmlを追加するだけです。簡単なことですが、実行した直後に組み込みサーバーを起動できないため、統合テストを実行できません。
スローされる例外は次のとおりです。
java.lang.RuntimeException: javax.ejb.EJBException: Failed to deploy EJB modules - see log for details
...
Caused by: javax.ejb.EJBException: Failed to deploy EJB modules - see log for details
stackTrace の残りの部分は、サーバーを起動しようとする行を指しているだけで、有用な情報は提供しません。
2 つの注意事項:
- @Injected Bean がなくても起動に失敗します。
- 埋め込まれていないグラスフィッシュで実行する場合、CDI は正常に動作するため、問題はテストのみです。
私たちのシステム
Maven プロジェクトの構造
myproject
myproject-ear
myproject-domain
myproject-ejb1
myproject-ejb2
myproject-war
myproject-test
環境
- Glassfish 3.1、3.2
- TestNG
File[] modules = {
new File("/target/classes"),
new File("../myproject-ejb1/target/classes"),
new File("../myproject-ejb2/target/classes")
...};
properties.put(EJBContainer.APP_NAME, "myproject");
properties.put(EJBContainer.MODULES, modules);
properties.put("org.glassfish.ejb.embedded.glassfish.instance.root","./src/main/resources");
EJBContainer container = EJBContainer.createEJBContainer(properties);
これまでに発見したこと
GlassFish でより細かいログ記録を有効にしましたが、何が失敗しているのかまだわかりません。
私たちは Arquillian について知っており、可能性として考えていますが、標準 API で最後にもう一度試してみたいと思います。
何が間違っている可能性がありますか?