ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Serverスタンドアロン・クライアントのプログラミング
11g リリース1(10.3.5)
B61622-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

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

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

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

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

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

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

次の手順を完了し、発信呼出し用にCORBA 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

例11-1は、JNDIからWebLogic ORBにアクセスする方法を示します。

例11-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の直接作成

例11-2は、WebLogic ORBを作成する方法を示します。

例11-2 ORBの直接作成

.
.
.
ORB orb = ORB.init();
MySvc svc = MySvcHelper.narrow(orb.string_to_object("corbaname:iiop:exthost:extport#where"));
.
.
.

JNDIの使用

例11-3は、JNDIを使用してWebLogic ORBにアクセスする方法を示します。

例11-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呼出しもサポートされています。これを実行するには、ORB.connect()を使用して、例11-4で示すようにCORBAインタフェース(過去のMySVCサンプルから構築する)を実装するRMIオブジェクトを書き込み、WebLogic Server内でCORBAサーバーをパブリッシュします。

例11-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サービスで使用できます。