スタンドアロン クライアント プログラマーズ ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

CORBA オブジェクトを使用するクライアントの開発

以下の節では、CORBA API の使用方法について説明します。

 


CORBA オブジェクト タイプの拡張と制限事項

RMI-IIOP ランタイムが拡張され、すべての CORBA オブジェクト タイプ (RMI 値タイプではなく) と CORBA スタブがサポートされるようになりました。拡張された点は以下のとおりです。

CORBA オブジェクト タイプのサポートには以下の制限があります。

 


発信 CORBA 呼び出しの実行 : 主な手順

次に、発信呼び出し用に CORAB API を使用する顧客向けに、典型的な開発モデルを実装する手順を示します。

  1. JDK の IDL コンパイラである idlj を使用して、IDL から CORBA スタブを生成します。
  2. javac を使用してスタブをコンパイルします。
  3. jar 内の生成済みスタブを含む EJB をビルドします。
  4. JNDI でホストされる WebLogic ORB を使用して、外部サービスを参照します。

 


JNDI でホストされる WebLogic ORB の使用

この節では、WebLogic ORB にアクセスするいくつかのメカニズムの例を示します。これらのメカニズムは同じ効果を持つので、ある程度はそれらの構成要素を組み合わせられます。narrow() で返されるオブジェクトは、外部 ORB サービスを表す CORBA スタブであり、通常の CORBA 参照で呼び出せます。以下の各コード サンプルでは、CORBA インタフェースが MySvc で、サービスは exthost:extport にある外部 ORB の CosNaming サービスの「where」でホストされるものとします。

JNDI から ORB

次のコード リストは、JNDI から WebLogic ORB にアクセスする方法を示しています。

コード リスト 10-1 JNDI から Weblogic ORB へのアクセス
.
.
.
ORB orb = (ORB)new InitialContext().lookup("java:comp/ORB");
NamingContext nc = NamingContextHelper.narrow(orb.string_to_object("corbaloc:iiop:exthost:extport/NameService"));
MySvc svc = MySvcHelper.narrow( nc.resolve(new NameComponent[] { new NameComponent("where", "")}));
.
.
.

ORB を直接作成する

次のコード リストは、WebLogic ORB の作成方法を示しています。

コード リスト 10-2 ORB の直接作成
.
.
.
ORB orb = ORB.init();
MySvc svc = MySvcHelper.narrow(orb.string_to_object("corbaname:iiop:exthost:extport#where"));
.
.
.

JNDI を使用する

次のコード リストは、JNDI を使用して WebLogic ORB にアクセスする方法を示しています。

コード リスト 10-3 JNDI を使用した WebLogic ORB へのアクセス
.
.
.
MySvc svc = MySvcHelper.narrow(new InitialContext().lookup("corbaname:iiop:exthost:extport#where"));
.
.
.

WebLogic ORB では、DII (Dynamic Invocation Interface) を始めとするほとんどのクライアント ORB 機能がサポートされます。このサポートを利用するには、外部 ORB をサーバ内でインスタンス化しないようにする必要があります。インスタンス化すると、WebLogic ORB による統合メリットを活かせなくなります。

 


着信 CORBA 呼び出しのサポート

WebLogic Server では、サーバ内で ORB をホストする以外の方法として、基本的な着信 CORBA 呼び出しもサポートされています。この方法では、CORBA インタフェースを実装する RMI オブジェクトを記述し、ORB.connect() を使用して CORBA サーバが WebLogic Server 内部にパブリッシュされるようにします。上記の MySVC サンプルの場合、次のようになります。

コード リスト 10-4 着信 CORBA 呼び出しのサポート
.
.
.
class MySvcImpl implements MvSvcOperations, Remote
{
public void do_something_remote() {}


public static main() {
MySvc svc = new MySvcTie(this);
InitialContext ic = new InitialContext();
((ORB)ic.lookup("java:comp/ORB")).connect(svc);
ic.bind("where", svc);
}
}
.
.
.

起動クラスとして登録すると、CORBA サービスを「where」に指定された WebLogic Server の CosNaming サービスで使用できるようになります。


  ページの先頭       前  次