Interstage Application Server アプリケーション作成ガイド (イベントサービス編)
目次 索引 前ページ次ページ

第7章 アプリケーションの開発(Java言語)

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

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

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

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005