0

私が取っているクラスのプロジェクトを構築しています.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 ファイルでもそのリポジトリを宣言する必要がありますか?

4

1 に答える 1

0

質問を入力する際に​​、問題が何であるかを知っていると思います。xml ファイルが存在するリポジトリは、impl モジュールの pom ではなく、プロジェクト (impl 親) のルート pom で宣言されます。impl は EAR と共にパッケージ化されるモジュールであるため、impl pom ファイルでもリポジトリを宣言する必要がある場合があります。

于 2013-11-08T14:40:08.643 に答える