スタンドアロン クライアント プログラマーズ ガイド
![]() |
![]() |
![]() |
![]() |
以下の節では、CORBA API の使用方法について説明します。
RMI-IIOP ランタイムが拡張され、すべての CORBA オブジェクト タイプ (RMI 値タイプではなく) と CORBA スタブがサポートされるようになりました。拡張された点は以下のとおりです。
CORBA オブジェクト タイプのサポートには以下の制限があります。
ORB.connect()
によって作成された CORBA サービスは、サーバ内でホストされる別のオブジェクトとなる。オブジェクトが不要になった場合、ORB.disconnect()
を使用して削除する必要があります。
次に、発信呼び出し用に CORAB API を使用する顧客向けに、典型的な開発モデルを実装する手順を示します。
この節では、WebLogic ORB にアクセスするいくつかのメカニズムの例を示します。これらのメカニズムは同じ効果を持つので、ある程度はそれらの構成要素を組み合わせられます。narrow()
で返されるオブジェクトは、外部 ORB サービスを表す CORBA スタブであり、通常の CORBA 参照で呼び出せます。以下の各コード サンプルでは、CORBA インタフェースが MySvc で、サービスは exthost:extport
にある外部 ORB の CosNaming サービスの「where」でホストされるものとします。
.
.
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 orb = ORB.init();
MySvc svc = MySvcHelper.narrow(orb.string_to_object("corbaname:iiop:exthost:extport#where"));
.
.
.
.
.
.
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 サンプルの場合、次のようになります。
.
.
.
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 サービスで使用できるようになります。
![]() ![]() |
![]() |
![]() |