私が取っているクラスのプロジェクトを構築しています.4つのモジュールで構成されています
-impl (business logic/dao access)
-ejb (encapsulates business logic and provides access to it via a remote interface)
-war (web tier)
-ear (contains the war and ejb modules)
impl 内にある 1 つのユーティリティ クラスは、H2 データベースにデータを入力できます。これは、データを取り込むためにさまざまな dao クラス/メソッドを使用して、maven リポジトリに存在する xml ファイルをプロセスで読み取るインジェスターを実行することによって行われます。
String fileName = "xml/proj-data.xml";
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName);
単体テストでインジェスターを実行すると正常に動作しますが、すべてを階層化すると、xml/proj-data.xml で NoClassDefFoundException が発生します。
したがって、私が持っている基本的な概要は次のとおりです。
-the war has dependencies on the impl and ejb modules
-the ejb has dependency on the impl module
-the ear has dependency on the impl, ejb, and war
これはMavenプロジェクトです。EAR をサーバーにデプロイすると、戦争の開始ページが表示されます (予想どおり)。
- html ページには、押されたときにサーブレットにポストするボタンがあります。 - サーブレットには、(リモート インターフェイスを介して) 呼び出す ejb が注入されています。- ejb メソッドは impl 内の populate メソッドへのコールバックを作成します。そのときに例外が発生し、例外を示す Web ページが返されます。
WAR pom ファイルでもそのリポジトリを宣言する必要がありますか?