1

GlassFish のアプリケーション クライアント コンテナで実行されるアプリケーション クライアントを使用して、Maven ベースのエンタープライズ アプリケーションを作成しようとしています。これは、Netbeans の「エンタープライズ アプリケーション」+「エンタープライズ アプリケーション クライアント」のプロジェクト テンプレートと同じように適合するはずですが、アリではなく Maven を使用します。

今まで私は次のプロジェクトを持っています

  • アセンブリ Maven プロジェクト
  • EARモジュール
  • EJB モジュール
  • WEB-Module (耳の内側でうまく機能します)
  • Swing クライアント モジュール

アセンブリ pom.xml は次のようになります。

    <project xml...
      <modules>
        <module>shop-ear</module>
        <module>shop-web</module>
        <module>shop-ejb</module>
        <module>shop-client</module>
      </modules>
    </project>

ear pom.xml には

<project ...>
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>shop</artifactId>
    <groupId>my.package.name</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <groupId>ch.hslu.edu.enapp</groupId>
  <artifactId>shop-ear</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>ear</packaging>
  <!-- ... -->
  <dependencies>
    <dependency>
        <groupId>my.package.name</groupId>
        <artifactId>shop-ejb</artifactId>
        <version>1.0-SNAPSHOT</version>
        <type>ejb</type>
    </dependency>
    <dependency>
        <groupId>my.package.name</groupId>
        <artifactId>shop-web</artifactId>
        <version>1.0-SNAPSHOT</version>
        <type>war</type>
    </dependency>
    <dependency>
        <groupId>my.package.name</groupId>
        <artifactId>shop-client</artifactId>
        <version>1.0-SNAPSHOT</version>
        <type>jar</type>
    </dependency>
</dependencies>

Swing クライアントの pom.xml には次のものが含まれます。

<project xmlns=....>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>shop</artifactId>
        <groupId>my.package.name</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <groupId>my.package.name</groupId>
    <artifactId>shop-client</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>shop-client</name>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.3.1</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>my.package.name.Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <url>http://download.java.net/maven/2/</url>
            <id>java.net</id>
            <layout>default</layout>
            <name>java.net</name>
        </repository>
    </repositories>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jdesktop</groupId>
            <artifactId>beansbinding</artifactId>
            <version>1.2.1</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
    </dependencies>
</project>

現在、Swing クライアントと EJB モジュールの間に依存関係はありません。シンプルな Swing フォームを立ち上げて、ACC フォーム GlassFish (v 3.1.1) から実行したいだけです。

しかし、これはうまくいきません。Swing-Client は ear-file 内の lib フォルダーにパックされており、起動できません。

このタスクを満たすチュートリアルまたは例を知っていますか?

4

2 に答える 2

2

ear pom は ear プラグインを次のように構成する必要があります (質問に入れるときに省略しただけでしょうか?):

<plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <version>6</version>
                <generateApplicationXml>true</generateApplicationXml>
                <defaultLibBundleDir>lib</defaultLibBundleDir>
                <modules>
                    <webModule>
                        <groupId>com.foo</groupId>
                        <artifactId>shop-web</artifactId>
                        <contextRoot>webstuff</contextRoot>
                    </webModule>
                    <ejbModule>
                        <groupId>com.foo</groupId>
                        <artifactId>shop-ejb</artifactId>
                        <classifier>single</classifier>
                        <bundleFileName>shop-ejb.jar</bundleFileName>
                    </ejbModule>
                    <jarModule>
                        <groupId>com.foo</groupId>
                        <artifactId>shop-client</artifactId>
                        <bundleDir>/</bundleDir>
                        <bundleFileName>shop-client.jar</bundleFileName>
                        <includeInApplicationXml>true</includeInApplicationXml> <!-- i don't remember if this was absolutely necessary -->
                    </jarModule>
                </modules>
          </configuration>
        </plugin>

これにより、アプリケーション クライアント jar が lib フォルダーの外にパッケージ化され、war モジュールのコンテキスト ルートを定義するのに役立ちます (他に方法はありません)。bundleFileName は、より意味のあるクライアントを起動するための URL を取得するために重要でした。

これをすべてまとめた単一のチュートリアルは知りませんが、いくつかのリソースは次のとおりです。

于 2011-08-15T20:23:26.080 に答える
1

現在、アプリクライアントの公式 Maven サポートがあります

http://maven.apache.org/plugins/maven-acr-plugin/ http://maven.apache.org/plugins/maven-ear-plugin/examples/using-app-client.html

http://web.anahata-it.com/2011/09/09/java-jee-desktop-maven-enterprise-application-client/

NetBeans 7.1 では、Maven アプリ クライアントのサポートも追加されます。

于 2011-09-10T10:45:53.900 に答える