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

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 );