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

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

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


  静的生成

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

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

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

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

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


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


イベントサービスの場合

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

CosNaming_NamingContext                    cos_naming;
CORBA_Environment                          env;
CosNaming_Name                             name;
CosNaming_NameComponent                    name_component;
CosEventChannelAdmin_EventChannel          event_ch;

name._length = name._maximum = 1; 
name._buffer = &name_component; 
name_component.id   = "Group::Channel";
name_component.kind = "";

event_ch = (CosEventChannelAdmin_EventChannel) 
            CosNaming_NamingContext_resolve( cos_naming, &name, &env );

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

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

CosNaming_NamingContext                    cos_naming;
CORBA_Environment                          env;
CosNaming_Name                             name;
CosNaming_NameComponent                    name_component;
CosNotifyChannelAdmin_EventChannel         event_ch;

name._length = name._maximum = 1; 
name._buffer = &name_component; 
name_component.id   = "Group::Channel";
name_component.kind = "";

event_ch = (CosNotifyChannelAdmin_EventChannel) 
            CosNaming_NamingContext_resolve( cos_naming, &name, &env );