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

第4章 アプリケーションの開発(各機能)

4.1 イベントチャネル接続のアプリケーション開発

 イベントチャネル接続での処理手順は、イベントチャネルの作成方法を問わず共通です。イベントサービスを使用する場合、アプリケーションは最初にイベントチャネルと接続する処理を行います。アプリケーションでのイベントチャネルとの接続手順を以下の図に示します。図では、アプリケーション内のメソッドの発行とイベントチャネルとの接続状態を表しています。

イベントサービスの場合

 C++プログラムのMixedモデルのアプリケーション作成例と処理の流れを以下に説明します。

[Mixedモデルのアプリケーション作成例(C++の場合)]

  try {
      ...
      channel = イベントチャネルのオブジェクトリファレンスの獲得 /* 1 */
      supplier = channel->for_suppliers( channel );              /* 2 */
      proxy_push = supplier->obtain_push_consumer( env );        /* 3 */
      proxy_push->connect_push_supplier( my_obj, env );          /* 4 */
      proxy_push->push( push_data, env );                        /* 5 */
      proxy_push->disconnect_push_consumer( env );               /* 6 */
      channel->destroy( env );                                   /* 7 */
      ... 
  } catch( CORBA::Exception &e ) {
      ... 
  }
  1. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、各言語の“アプリケーションの開発”−“イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。
  2. CosEventChannelAdmin::EventChannel::for_suppliers()メソッドで、サプライヤ管理のオブジェクトリファレンスを獲得します。
  3. CosEventChannelAdmin::SupplierAdmin::obtain_push_consumer()メソッドで、サプライヤに接続するイベントチャネルのオブジェクトを獲得します。
  4. CosEventChannelAdmin::ProxyPushConsumer::connect_push_supplier()メソッドで、イベントチャネルとサプライヤを接続します。サプライヤまたはコンシューマとして動作する自アプリケーションのオブジェクトリファレンスをパラメタとして接続時に指定します。自アプリケーションのオブジェクトリファレンスの獲得方法については、各言語の“アプリケーションの開発”−“コンシューマとサプライヤのオブジェクトリファレンスの獲得”を参照してください。
  5. CosEventChannelAdmin::ProxyPushConsumer::push()メソッドで、イベントチャネルにイベントデータを送信します。
  6. CosEventChannelAdmin::ProxyPushConsumer::disconnect_push_consumer()メソッドで、サプライヤをイベントチャネルと切断します。
  7. イベントチャネルが不要ならば、CosEventChannelAdmin::EventChannel::destroy()メソッドで、イベントチャネルを破壊します。

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

 C++プログラムのMixedモデルのアプリケーション作成例と処理の流れを以下に説明します。

[Mixedモデルのアプリケーション作成例(C++の場合)]

  try {
      ... 
      channel = イベントチャネルのオブジェクトリファレンスの獲得         /* 1 */
      supplier = channel->default_supplier_admin( env );                 /* 2 */
      tmp_proxy = supplier->obtain_notification_push_consumer
                                               (ctype,proxy_id, env );   /* 3 */
      proxy_push = CosNotifyChannelAdmin::ProxyPushConsumer::_narrow( tmp_proxy ); 
      proxy_push->connect_structured_push_supplier
              (CosNotifyComm::StructuredPushSupplier::_nil()  ,env);     /* 4 */
      proxy_push->push_structured_event(push_data, env );                /* 5 */
      proxy_push->disconnect_structured_push_consumer( env );            /* 6 */
      channel->destroy( env );                                           /* 7 */
      ... 
  } catch( CORBA::Exception &e ) {
      ... 
  }
  1. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、各言語の“アプリケーションの開発”−“イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。
  2. CosNotifyChannelAdmin::EventChannel::default_supplier_admin ()メソッドで、サプライヤ管理のオブジェクトリファレンスを獲得します。
  3. CosNotifyChannelAdmin::SupplierAdmin::obtain_notification_push_consumer()メソッドで、サプライヤに接続するイベントチャネルのオブジェクトを獲得します。
  4. CosNotifyChannelAdmin::StructuredProxyPushConsumer::connect_structured_push_consumer()メソッドで、イベントチャネルとサプライヤを接続します。サプライヤまたはコンシューマとして動作する自アプリケーションのオブジェクトリファレンスをパラメタとして接続時に指定します。自アプリケーションのオブジェクトリファレンスの獲得方法については、各言語の“アプリケーションの開発”−“コンシューマとサプライヤのオブジェクトリファレンスの獲得”を参照してください。
  5. CosNotifyComm::StructuredPushConsumer::push_structured_event()メソッドで、イベントデータを送信します。
  6. CosNotifyComm::StructuredPushConsumer::disconnect_structured_push_consumer()メソッドで、サプライヤをイベントチャネルと切断します。
  7. イベントチャネルが不要ならば、CosEventChannelAdmin::EventChannel::destroy()メソッドで、イベントチャネルを破壊します。


 イベントチャネルの接続(connect)を行ったアプリケーションは、必ずイベントチャネルからの切断(disconnect)を行ったうえ、終了するように作成してください。


下へ4.1.1 ノーティフィケーションサービスのQoS機能の運用
下へ4.1.2 アプリケーション異常終了時の接続情報の回収方法
下へ4.1.3 イベントチャネルの接続情報の取得

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

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