0

メイヴン、メイヴン、メイヴン。とてもいいに違いないし、ちょっとしたアプリでいいですよね。

ここで、ear プロジェクトをビルドします。2 つの EJB モジュール、web モジュール、ear モジュールを使用して、ear ファイルをビルドします。Web モジュールは、他の ejb モジュールに依存しています。

Web モジュールが ear の他の 2 つの ejb モジュールと通信し、ear モジュールが右の ear ファイルを構築できるようにするには、各モジュールで Pom.xml をどのように定義すればよいですか?

私が以前にやったこと:

モジュール 1 --> 基本モジュール。他のすべてのモジュールは、このモジュールに依存しています。ログインなどの基本機能

<packaging>ejb</packaging>

モジュール 1 --> データ モジュール。すべてのエンティティがここにある Type EJB

<dependency>
    <groupId>com.myCompnay</groupId>
    <artifactId>Modul_Basic</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <type>ejb</type>
</dependency

モジュール 2 --> ビジネス モジュール。ビジネスファサードはこちらです。タイプEJB

<dependency>
    <groupId>com.myCompnay</groupId>
    <artifactId>Modul_Basic</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <type>ejb</type>
</dependency            

Web モジュール -> タイプは WAR

<dependency>
        <groupId>com.myCompnay</groupId>
        <artifactId>Modul_Basic</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>ejb</type>
    </dependency

EAR モジュール --> このプロジェクトでは、プロジェクトのビルドを試みます。

<packaging>ear</packaging>

    <dependencies>
            <dependency>
        <groupId>com.myCompnay</groupId>
        <artifactId>Modul_Basic</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>ejb</type>
    </dependency
            <dependency>
        <groupId>com.myCompnay</groupId>
        <artifactId>Modul_Business</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>ejb</type>
    </dependency
    <dependency>
        <groupId>com.myCompnay</groupId>
        <artifactId>Modul_WEB</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>war</type>
    </dependency

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>               
        </plugin>
    </plugins>
</build>
4

1 に答える 1

1

ejb インターフェイスと関連するインターフェイス オブジェクト (つまり、ejb API)だけを含む個別の jar モジュールが必要です。(ところで、この問題はmavenとは関係ありません。ビルドシステムを使用しても同じ問題が発生します)。現在のセットアップには 4 つのモジュール (2 つの ejb、1 つの war、1 つの ear) があります。代わりに、5 つのモジュールが必要です。

  • EJB API (jar): ejb インターフェイスと、これらのインターフェイスで使用される可能性のあるデータ オブジェクトのみ
  • EJB A、B (ejb): ejb 実装、API jar に依存
  • WEB (war): ejb jarではなくAPI jar に依存
  • EAR (ear): ejbs と war に依存します。

これは典型的なクライアント/サーバーのセットアップです。サーバーは通常、「パブリック API」モジュールと「実装」モジュールで構成されます。「パブリック API」は、すべてのクライアント実装に配布されます。

アップデート:

私はあなたの問題を誤解している可能性があります (Java EE の作業を行ってからしばらく経ちます)。war モジュールの「基本的な」依存関係をスコープ「提供」としてマークするだけでよいと思います。たとえば、次のようになります。

<dependency>
    <groupId>com.myCompnay</groupId>
    <artifactId>Modul_Basic</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <type>ejb</type>
    <scope>provided</scope>
</dependency>

これにより、クラスに対してコンパイルできますが、ejb jar は戦争に含まれません。ejb jarは war クラスローダから入手できると思います。

于 2012-08-30T16:28:50.883 に答える