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

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 ) {
    ...
}