手順は次のとおりです。
- 新規プロジェクトのメニューのMavenのフォルダーを使用して、インターフェース・クラスを保持するためのJavaクラス・ライブラリーを作成します。Mavenフォルダーの下のJavaアプリケーションを選択します。
- NBのチュートリアルに従ってエンタープライズアプリケーションを作成します。唯一の違いは、新しいプロジェクトのメニューのMavenのフォルダーを使用する必要があることです。
- クラスライブラリを構築する
- クラスライブラリがエンタープライズアプリケーションの依存関係であることを確認してください。
- Enterpiseアプリケーションを実行します。NBはそれをGFサーバーに展開します
- Mavenのフォルダーを使用してアプリケーションクライアントを作成します。ステートレスEJBを挿入するために、挿入コードNBの機能を使用しないでください。クラッシュするためです(少なくとも私のバージョンでは、NB 7.2)。代わりに、チュートリアルに示されているコードをコピーして貼り付けてください。デプロイメント/ejb記述子は必要ありません。
maven-assembly-pluginを使用して依存関係のあるjarを取得するには、アプリケーションクライアントのPOMを変更します。この手順を実行しないと、GFがインターフェイスクラスをロードできないため、デプロイは失敗します。タブに次の行を追加しplugins
ます(必要に応じてメインクラスを変更します)。
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.entapp.entappclient.Main</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
NBを使用してアプリケーションクライアントプロジェクトを構築する
- GFのアプリケーションクライアントコマンドを使用して、アプリケーションクライアントを実行します。
appclient -jar EntAppClient-1.0-SNAPSHOT-jar-with-dependencies.jar
便利なリンク:Java EEの埋蔵金:JasonLeeによるアプリケーションクライアントコンテナ
重要な注意点
クライアントを他のJVMにデプロイするには、各クライアントマシンにappclientをインストールし、target-serverプロパティを設定する必要があります。appclientは非常に複雑な構造を持っているようです。これは、これらの行(およびEclipseLink永続性アーティファクト)を追加するだけでは作成できません。
<dependency>
<groupId>org.glassfish.appclient</groupId>
<artifactId>gf-client</artifactId>
<version>3.1.1</version>
<type>pom</type>
<scope>compile</scope>
</dependency>
これらのアーティファクトをクライアントに追加すると完全にコンパイルされますが、jarは機能しません。そして、ファイルsun-acc.xmlが欠落しているため、これは理解できます(このファイルには、target-serverプロパティが含まれているため必要です)。したがって、リンクされたドキュメントに従ってスクリプトを使用するのが唯一の方法だと思いpackage-appclient
ます。