Oracle® Fusion Middleware Oracle WebLogic Server スタンドアロン クライアント プログラマーズ ガイド 11g リリース 1 (10.3.1) B55526-01 |
|
![]() 戻る |
![]() 次へ |
以下の節では、CORBA API の使用方法について説明します。
RMI-IIOP ランタイムが拡張され、すべての CORBA オブジェクト タイプ (RMI 値タイプではなく) と CORBA スタブがサポートされるようになりました。拡張された点は以下のとおりです。
out および inout パラメータをサポート
トランザクションおよびセキュリティを使用した WebLogic Server から CORBA サービスへの呼び出しのサポート
旧リリースで使用されていた JDK ORB のインスタンスではなく、JNDI でホストされる WebLogic ORB のサポート
CORBA オブジェクト タイプのサポートには以下の制限があります。
WebLogic Server インスタンスから別の WebLogic Server インスタンスへの呼び出しには使用できない。
クラスタ化はサポートされない。クラスタ化されたオブジェクト参照が検出されると、WebLogic Server では内部 RMI-IIOP サポートによって呼び出しが行われます。out および inout パラメータはサポートされません。
ORB.connect()
によって作成された CORBA サービスは、サーバ内でホストされる別のオブジェクトとなる。オブジェクトが不要になった場合、ORB.disconnect()
を使用して削除する必要があります。
次に、発信呼び出し用に CORBA API を使用する顧客向けに、典型的な開発モデルを実装する手順を示します。
JDK の IDL コンパイラである idlj を使用して、IDL から CORBA スタブを生成します。
javac を使用してスタブをコンパイルします。
jar 内の生成済みスタブを含む EJB をビルドします。
JNDI でホストされる WebLogic ORB を使用して、外部サービスを参照します。
この節では、WebLogic ORB にアクセスするいくつかのメカニズムの例を示します。これらのメカニズムは同じ効果を持つので、ある程度はそれらの構成要素を組み合わせられます。narrow()
で返されるオブジェクトは、外部 ORB サービスを表す CORBA スタブであり、通常の CORBA 参照で呼び出せます。以下の各サンプル コードでは、CORBA インタフェースが MySvc で、サービスは exthost:extport
にある外部 ORB の CosNaming サービスの「where」でホストされるものとします。
次のコード リストは、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", "")})); . . .
次のコード リストは、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 による統合メリットを活かせなくなります。
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 サービスで使用できるようになります。