2

埋め込み可能なGlassfishアプリのクライアントコンテナを使用しようとしています。私が見つけることができる唯一のリソースは、この魅力的なコードスニペットを含む上記のjavadocです。

import org.glassfish.appclient.client.acc.AppClientContainer;
import org.glassfish.appclient.client.acc.config.TargetServer;

AppClientContainerBuilder builder = AppClientContainer.newBuilder(
   new TargetServer("localhost", 3700));

AppClientContainer acc = builder.newContainer(new File("myAC.jar").toURI());

(または、代わりに)

AppClientContainer acc = builder.newContainer(MyClient.class);

それから、

acc.startClient(clientArgs);
// The newContainer method returns as soon as the client's main method returns,
// even if the client has started another thread or is using the AWT event
// dispatcher thread 
// At some later point, the program can synchronize with the app client in
// a user-specified way at which point it could invoke

acc.stop();

これはかなり素晴らしいように見えますが、私はこれをさまざまな異なるエラーで数回実行しようとしました。

誰かがこれを使用した経験がありますか、またはこれを使用する方法を説明するいくつかのリソースの方向に私を向けることができますか?

4

2 に答える 2

3

私はこれをGlassfish3.1.2と単純なJavaSwingUIアプリケーションで動作させています。TargetServerによって指定されたホスト/ポートは無視されているようです。システムプロパティを設定する必要がありました。

org.omg.CORBA.ORBInitialHost = hostname
org.omg.CORBA.ORBInitialPort = 2037

デフォルトのポートで実行していないため、接続を取得します。

すべてをコンパイルするには、AppClientContainerなどがパッケージに含まれていることをOracleが文書化した場合に役立ちます。

org.glassfish.appclient.client.acc

次に、コンパイルに必要な.jarを見つけることができます。

gf-client,jar, gf-client-module.jar, acc-config.jar

AppClientContainer.startClientは、次のメソッドを呼び出そうとします。

public static void main(String[] args)

MyClient.classで、これは正確にあなたが望むものではないかもしれません。私の場合、私の目標は、これをEclipseベースのアプリケーションで機能させることです。このアプリケーションは、起動を「所有」したいと考えています。さらに、私が必要とするOSGI環境は、独自の互換性のないクラスローディングメカニズムを備えたGlassfishACCと完全に対立しているようです。

startClientの呼び出しには必要ですが、 mainメソッドは別のスレッドや特別なもので呼び出されていないようです。startClient呼び出しが戻った直後に、何もしないダミーのメインを提供し、すべてのアプリケーションコードを取得できることがわかりました。

このACC実装全体が、スタンドアロンクライアントをGlassfish 3で実行されているアプリケーションに接続する唯一のサポートされている方法のようです。これは、v2で利用できる単純さに比べるとかなり不十分です。.jarの膨大なリストには、私にはまったく興味のないあらゆる種類のものが含まれています。実際、起動時に次のメッセージが表示されます。

15-May-2012 17:49:27 com.sun.enterprise.v3.server.CommonClassLoaderServiceImpl findDerbyClient
INFO: Cannot find javadb client jar file, derby jdbc driver will not be available by default.

また、OracleはSLF4Jロガー実装をbean-validator.jarにダンプしましたが、これは私自身の優先実装と衝突しており、さらにエラーメッセージが表示されます。

http://glassfish.java.net/javaee5/ejb/EJB_FAQ.htmlにあるGlassfishEJBFAQは、v3用に更新されており、いくつかの助けにもなります。

于 2012-05-15T16:33:06.483 に答える
1

OracleのサイトでACCを使用してクライアントを開発することについては、まともなドキュメントがあるようです。

于 2011-07-27T21:12:44.147 に答える