| 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サービスで使用できるようになります。