ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(イベントサービス編)

7.5 イベントチャネルのオブジェクトリファレンスの獲得

  イベントチャネルのメソッドを呼び出すために、アプリケーションはイベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスは、静的生成と動的生成により獲得の方法が異なります。


  静的生成

  イベントチャネル生成コマンド(esmkchnlコマンド)によりオブジェクトリファレンスがネーミングサービスに登録されています。アプリケーションからネーミングサービスを使用して獲得します。

  動的生成(イベントサービスの場合)

  イベントファクトリのcreateメソッドの復帰値としてオブジェクトリファレンスを獲得します。

  動的生成(ノーティフィケーションサービスの場合)

  イベントチャネルを新規に生成する場合は、イベントファクトリのcreate_channelメソッドの復帰値としてオブジェクトリファレンスを獲得します。すでに生成されている場合は、イベントファクトリのget_event_channelメソッドの復帰値としてオブジェクトリファレンスを獲得します。


  静的生成によりネーミングサービスに格納されているオブジェクトリファレンスを獲得する例を以下に示します。アプリケーションは、ネーミングサービスにチャネル名を問い合わせ、イベントチャネルを獲得します。


イベントサービスの場合

  ネーミングサービスから登録名「Group::Channel」のオブジェクトリファレンスを獲得する場合

CosEventChannelAdmin.EventChannel        Eventch;

try {
    ...
    org.omg.CORBA.Object obj = Orb.resolve_initial_references("NameService");
    Cos = NamingContextExtHelper.narrow(obj); 

    String NCid   = new String("Group::Channel");
    String NCkind = new String("");
    NameComponent nc =  new NameComponent(NCid, NCkind);
    NameComponent NCo[] = { nc };
    obj = Cos.resolve(NCo);
    
    Eventch = EventChannelHelper.narrow(obj);
    
} catch( Exception e ) {
    ...
}

ノーティフィケーションサービスの場合

  ネーミングサービスから登録名「Group::Channel」のオブジェクトリファレンスを獲得する場合

CosNotifyChannelAdmin.EventChannel       Eventch;

try {
    ...
    org.omg.CORBA.Object obj = Orb.resolve_initial_references("NameService");
    Cos = NamingContextExtHelper.narrow(obj); 
    
    String NCid   = new String("Group::Channel");
    String NCkind = new String("");
    NameComponent nc =  new NameComponent(NCid, NCkind);
    NameComponent NCo[] = { nc };
    obj = Cos.resolve(NCo);
    
    Eventch = EventChannelHelper.narrow(obj);
    
} catch( Exception e ) {
    ...
}