WebSphere Application Server Network Deployment for i5/OS, Version 6.1   
             オペレーティング・システム: i5/OS

             目次と検索結果のパーソナライズ化

例: CosNaming を使用した初期コンテキストの取得

WebSphere Application Server では、 初期コンテキストは、ブートストラップ・サーバーから取得されます。ブートストラップ・サーバーのアドレスは、ホストおよびポートで 構成されています。初期コンテキストを取得するには、 ブートストラップ・サーバーとして使用されるサーバーのホストおよびポートがわかっている必要があります。

初期コンテキストを取得する方法は、以下の 2 つの基本的なステップで構成されています。

  1. ORB 参照を取得します
  2. ORB 参照を使用して 初期コンテキストを取得します。あるいは、 既存の ORB を使用して、(複数のネーム・サーバー・アドレスを指定した) CORBA オブジェクト URL で string_to_object を呼び出して、 初期コンテキストを取得する方法もあります。

ORB 参照の取得

Pure CosNaming クライアント (サーバー・プロセスで実行されていないクライアント) は、初期コンテキストを取得する場合に使用する ORB インスタンスを作成および 初期化する必要があります。サーバー・プロセスで実行されている CosNaming クライアントは、JNDI ルックアップを 使用してサーバー ORB への参照を取得することができます。以下の例は、 クライアント ORB を作成および初期化する方法、およびサーバー ORB 参照を取得する方法の例 を示しています。

クライアント ORB インスタンスの作成

ORB インスタンスを作成するには、 静的メソッド org.omg.CORBA.ORB.init を呼び出します。init メソッドでは、インスタンスを生成する ORB クラスの名前にプロパティーを設定する必要があります。製品には、クラス名が com.ibm.CORBA.iiop.ORB である ORB 実装が含まれています。 WebSphere Application Server ORB は、初期参照の指定に使用できる追加のプロパティーを認識します。

ORB を作成する基本ステップは、以下のとおりです。

  1. Properties オブジェクトを作成する。
  2. ORB クラス・プロパティーを製品の ORB クラスに設定する。
  3. 初期参照プロパティーを設定する。
  4. Properties オブジェクトを渡して、ORB.init を呼び出す。
...
import java.util.Properties;
import org.omg.CORBA.ORB;
...
Properties props = new Properties();
props.put("org.omg.CORBA.ORBClass","com.ibm.ws390.orb.ORB");
props.put("com.ibm.CORBA.ORBInitRef.NameService", "corbaloc:iiop:myhost.mycompany.com:2809/NameService");
props.put("com.ibm.CORBA.ORBInitRef.NameServiceServerRoot", "corbaloc:iiop:myhost.mycompany.com:2809/NameServiceServerRoot");
ORB _orb = ORB.init((String[])null, props);
...

サーバー ORB への参照の取得

1 つのサーバー・プロセスで実行されている CosNaming クライアントは、以下に示すように java: ネームで JNDI ルックアップを使用して、サーバー ORB への参照を 取得します。

...
import javax.naming.Context;
import javax.naming.InitialContext;
import org.omg.CORBA.ORB;
...
Context initialContext = new InitialContext();
ORB orb = (ORB) initialContext.lookup("java:comp/ORB");
... 

初期ネーミング参照を取得するための ORB 参照の使用

初期 CosNaming コンテキストの取得には、2 通りの基本的な方法があります。いずれの方法でも、ORB メソッドの呼び出しが行われます。第 1 の方法は、ORB で resolve_initial_references メソッドを呼び出す方法です。この呼び出しが機能するには、ORB は、このキーの 初期参照で初期化される必要があります。もう 1 つの方法は、ブートストラップ・サーバーのホストおよびポート と共に CORBA オブジェクト URL を渡して、ORB で string_to_object メソッドを呼び出す方法です。以下の例は、 両方の方法を示しています。

resolve_initial_references の呼び出し

ORB 参照を取得した後、ORB で resolve_initial_references メソッドを呼び出して、初期コンテキストへの参照を取得します。以下のコード例では、ORB 参照で resolve_initial_reference を呼び出します。

...
import org.omg.CORBA.ORB;
import org.omg.CosNaming.NamingContextExt;
import org.omg.CosNaming.NamingContextExtHelper;
...
// Obtain ORB reference as shown in examples earlier in this section
...
org.omg.CORBA.Object obj = _orb.resolve_initial_references("NameService");
NamingContextExt initCtx = NamingContextExtHelper.narrow(obj);
...

キー NameService が resolve_initial_references メソッドに渡されることに 注意してください。他の初期コンテキスト・キーは、製品サーバーに登録されています。 例えば、NameServiceServerRoot を使用して、ブートストラップ・ネーム・サーバーの サーバー・ルート・コンテキストへの参照を取得することができます。サーバー ORB に登録されている初期コンテキストについて詳しくは、 初期コンテキストのサポート を参照してください。

CORBA オブジェクト URL を使用した string_to_object の呼び出し

ORB が初期参照 またはブートストラップ・プロパティーで初期化されていないか、または これらのプロパティー設定が、初期コンテキストの取得元とするネーム・サーバー以外の サーバー用である場合に、INS 準拠の ORB を使用して、 初期コンテキストを取得することができます。ブートストラップ・ネーム・サーバーを明示的に指定することによって 初期コンテキストを取得するには、ブートストラップ・サーバー・ホストおよびポートを含む CORBA オブジェクト URL を渡して、ORB で string_to_object メソッドを呼び出します。

以下のコード例では、必要とする初期コンテキストを 識別する CORBA オブジェクト URL を渡して、既存の ORB で string_to_object メソッドを呼び出しています。

... 
import org.omg.CORBA.ORB;
import org.omg.CosNaming.NamingContextExt;
import org.omg.CosNaming.NamingContextExtHelper;
...
// Obtain ORB reference as shown in examples earlier in this section
...
org.omg.CORBA.Object obj =
 orb.string_to_object("corbaloc:iiop:myhost.mycompany.com:2809/NameService");
NamingContextExt initCtx = NamingContextExtHelper.narrow(obj);
...

キー NameService が corbaloc URL で使用されることに 注意してください。他の初期コンテキスト・キーは、製品サーバーに登録されています。 例えば、NameServiceServerRoot を使用して、ブートストラップ・ネーム・サーバーの サーバー・ルート・コンテキストへの参照を取得することができます。

既存の ORB を使用し、複数のネーム・サーバー・アドレスを持つ CORBA オブジェクト URL により string_to_object を呼び出して、初期コンテキストを取得する

CORBA オブジェクト URL は、 複数のブートストラップ・サーバー・アドレスを持つことができます。 この機能は、 サーバー・クラスターから初期コンテキストを取得しようとするときに使用できます。 URL 内のクラスターのすべてのサーバーに、ブートストラップ・サーバー・アドレスを 指定することができます。少なくとも 1 つのサーバーが稼働してれば、 オペレーションは正常に処理され、Single Point of Failure (SPOF) を回避できます。 アドレス・リストの処理は、必ずしも所定の順序で行われるとは限りません。 例えば、 リストの 1 番目のブートストラップ・サーバーが使用可能であったとしても、 初期コンテキストを取得するのに 2 番目のブートストラップ・サーバー・アドレスが使用される場合があります。 以下の例は、複数のアドレスを持つ corbaloc URL を示しています。

... 
import org.omg.CORBA.ORB;
import org.omg.CosNaming.NamingContextExt;
import org.omg.CosNaming.NamingContextExtHelper;
...
// Assume orb is an existing ORB instance
org.omg.CORBA.Object obj = orb.string_to_object(
   "corbaloc::myhost1:9810,:myhost1:9811,:myhost2:9810/NameService");
NamingContextExt initCtx = NamingContextExtHelper.narrow(obj);
...



参照トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 8:28:52 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.iseries.doc/info/iseriesnd/ae/rnam_example_corba1.html