Oracle® Fusion Middleware Oracle WebLogic Serverスタンドアロン・クライアントのプログラミング 11g リリース1(10.3.4) B61622-02 |
|
![]() 前 |
![]() 次 |
以下の節では、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にアクセスする方法を示しています。
例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", "")})); . . .
次の例は、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による統合メリットを活かせなくなります。
WebLogic Serverでは、サーバー内でORBをホストする以外の方法として、基本的な着信CORBA呼出しもサポートされています。この方法では、CORBAインタフェースを実装するRMIオブジェクトを記述し、ORB.connect()
を使用してCORBAサーバーがWebLogic Server内部にパブリッシュされるようにします。上記のMySVCサンプルの場合、次のようになります。
例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サービスで使用できるようになります。