Sun Java System Application Server Enterprise Edition 8.2 トラブルシューティングガイド

スタンドアロン Java クライアントからはどのようにネームサービスにアクセスできますか ?

Procedureアプリケーションクライアントからネームサービスにアクセスする

  1. クライアント Java VM 起動時の CLASSPATHappserv-rt.jar を追加します。

    JNDI ブートストラップ機構で、appserv-rt.jar にある jndi.properties という名前のファイルが検索されます。このファイルには、Application Server のネームサービスに関するすべてのブートストラッププロパティーが含まれています。これらのプロパティーは、クライアント起動スクリプトまたはアプリケーションコードに明示的に記述するよりも、appserv-rt.jar から読み取るようにすることをお勧めします。

  2. スタンドアロンクライアントからリモート EJB にアクセスする場合は、配備からクライアント JAR を取り出したり、JAR をクライアント JVM の CLASSPATH に追加したりする必要はありません。Application Server ネームサービスの使用時に静的 RMI-IIOP スタブは必要ないからです。これにより、以前のリリースで必要とされた手順は不要になります。詳しくは、「リモート EJB にアクセスするために RMI-IIOP スタブは必要ですか ?」を参照してください。

  3. 引数を必要としないデフォルトコンストラクタ InitialContext を使用するようにクライアントコードを記述します。次に例を示します。


    InitialContext ic = new InitialContext();

    クライアントから CosNaming サービスを明示的に参照するコーディングが強く推奨されるというのは、よくある誤解です。CosNaming は Application Server オブジェクトの一部の種類にのみ使用されるため、そのように記述しても、JMS キュー、接続ファクトリなどクライアントで必要となる可能性があるリソースの多くにアクセスできるようにはなりません。加えて、CosNaming を明示的に使用すると、Application Server のネームサービスコードの実行が省略されます。これにより、多くの場合、Application Server のネームサービスに組み込まれた便利で付加価値の高い処理をクライアントから利用できなくなります。

  4. 検索時には、ターゲットリソースのグローバル JNDI 名を使用します。java:comp/env をスタンドアロン Java クライアントから使用することはできません。そのようなクライアントは J2EE コンテナの外部で実行するように定義されているからです。java:comp/env を使用できるクライアントコンポーネントは、J2EE アプリケーションクライアントだけです。

  5. クライアントがサーバーインスタンスとは別のホストマシンで実行されている場合は、Java VM 起動時に次のシステムプロパティーを設定します。


    -Dorg.omg.CORBA.ORBInitialHost=hostname_of_target_server
    

    デフォルト値は localhost です。したがって、このプロパティーが必要なのは、クライアントとサーバーのインスタンスが共存していない場合だけです。次に例を示します。


    java -Dorg.omg.CORBA.ORBInitialHost=server1 ... com.foo.MyMainClass
  6. デフォルトでは、クライアントからサーバーのネームサービスを使用するためポート 3700 への接続が試行されます。3700 は Application Server で使用されるデフォルトのネームサービスポートなので、クライアントで追加のポート設定は必要ありません。ポートの衝突が原因で、サーバーインスタンスで別のネームサービスポートが使用される場合もあります。サーバーインスタンスで使用されるネームサービスポートは、domain.xml 内の <iiop-listener id="orb-listener-1" port="3700"\> 要素に示されます。

    クライアントで使用されるネームサービスポートを変更するには、クライアント Java VM 起動時に次のシステムプロパティーを設定します。


    -Dorg.omg.CORBA.ORBInitialPort=naming_port_of_target_server