| Oracle® Fusion Middleware Oracle WebLogic Serverスタンドアロン・クライアントのプログラミング 11g リリース1(10.3.5) B61622-03 |
|
![]() 前 |
![]() 次 |
次の項では、CORBA APIの使用方法について説明します。
RMI-IIOPランタイムが拡張され、すべてのCORBAオブジェクト・タイプ(RMI値タイプではなく)とCORBAスタブがサポートされるようになりました。拡張された点は次のとおりです。
outおよびin-outパラメータをサポートします
トランザクションおよびセキュリティを使用したWebLogic ServerからCORBAサービスへの呼出しのサポート
旧リリースで使用されていたJDK ORBのインスタンスではなく、JNDIでホストされるWebLogic ORBのサポート
CORBAオブジェクト・タイプのサポートには以下の制限があります。
WebLogic Serverインスタンスから別のWebLogic Serverインスタンスへの呼出しには使用できません。
クラスタリングはサポートされません。クラスタリングされたオブジェクト参照が検出されると、WebLogic Serverでは内部RMI-IIOPサポートによって呼出しが行われます。outおよびin-outパラメータはサポートされません。
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」でホストされるものとします。
例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", "")}));
.
.
.
例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による統合メリットを活かせなくなります。
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サービスで使用できます。