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

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

7.4 Mixedモデル

 Java言語でのMixedモデルのアプリケーションの開発について説明します。

(1)概要

 MixedモデルはPushモデル、Pullモデルの2つの通信モデルを使用します。
 サプライヤはイベントチャネルにイベントデータを送信し、コンシューマはイベントチャネルにイベントデータを要求します。

(2)サプライヤの作成

 サプライヤはイベントチャネルにイベントデータを送信します。Pushモデルのサプライヤと同様のインタフェースを使用します。サプライヤからコンシューマにイベントデータを送信する処理の概要と流れを以下に説明します。

イベントサービスの場合

[Mixedモデルのサプライヤ]

  public boolean func() {
      ... 
      try {
          supplier = Eventch.for_suppliers();               /* 1 */
          proxy_push = supplier.obtain_push_consumer();     /* 2 */
          proxy_push.connect_push_supplier(null);           /* 3 */
          proxy_push.push( data );                          /* 4 */
          proxy_push.disconnect_push_consumer();            /* 5 */
      } catch( Exception e ) {
          ... 
      }
      ... 
  }

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

[Mixedモデル(StructuredEvent型)のサプライヤ]

  public boolean func() {
      ... 
      try {
          supplier = Eventch.default_supplier_admin();       /* 1 */
          tmp_proxy=supplier.obtain_notification_push_consumer
               (ClientType.STRUCTURED_EVENT,proxyid);        /* 2 */
          proxy_push= StructuredProxyPushConsumerHelper.narrow
                                                       (tmp_proxy); 
          proxy_push.connect_structured_push_supplier
                                            (null);          /* 3 */
          proxy_push.push_structured_event(data);            /* 4 */
          proxy_push.disconnect_structured_push_consumer();  /* 5 */
      } catch( Exception e ) {
          ... 
      }
      ... 
  }

[Mixedモデル(any型)のサプライヤ]

  public boolean func() {
      ... 
      try {
          supplier = Eventch.default_supplier_admin();       /* 1 */
          tmp_proxy=supplier.obtain_notification_push_consumer
               (ClientType.ANY_EVENT,proxyid);               /* 2 */
          proxy_push= ProxyPushConsumerHelper.narrow(tmp_proxy);
          proxy_push.connect_any_push_supplier(null);        /* 3 */
          proxy_push.push(data);                             /* 4 */
          proxy_push.disconnect_push_consumer();             /* 5 */
      } catch( Exception e ) {
          ... 
      }
      ... 
  }
  1. イベントチャネル管理オブジェクトのオブジェクトリファレンスを獲得します。
  2. イベントチャネルのオブジェクトリファレンスを獲得します。
  3. イベントチャネルと接続します。
  4. イベントチャネルにイベントデータを送付します。
  5. イベントチャネルと切断します。

(3)コンシューマの作成

 コンシューマはイベントチャネルにイベントデータを要求します。Pullモデルのコンシューマと同様のインタフェースを使用します。コンシューマがイベントチャネルにイベントデータを要求する手続き例と処理の流れを以下に説明します。

イベントサービスの場合

[Mixedモデルのコンシューマ]

  public boolean func() {
      ... 
      try {
          consumer = Eventch.for_consumers();              /* 1 */
          proxy_pull = consumer.obtain_pull_supplier();    /* 2 */
          proxy_pull.connect_pull_consumer( null );        /* 3 */
          data = proxy_pull.pull();                        /* 4 */
          proxy_pull.disconnect_pull_supplier();           /* 5 */
      } catch( Exception e ) {
          ... 
      }
      ... 
  }

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

[Mixedモデル(StructuredEvent型)のコンシューマ]

  public boolean func() {
      ... 
      try {
          consumer = Eventch.default_consumer_admin();       /* 1 */
          tmp_proxy =consumer.obtain_notification_pull_supplier
               (ClientType.STRUCTURED_EVENT,proxyid);        /* 2 */
          proxy_pull= StructuredProxyPullSupplierHelper.narrow
                                                       (tmp_proxy); 
          proxy_pull.connect_structured_pull_consumer
                                              (null);         /* 3 */
          data = proxy_pull.pull_structured_event();          /* 4 */
          proxy_pull.disconnect_structured_pull_supplier();   /* 5 */
      } catch( Exception e ) {
          ... 
      }
   ... 
  }

[Mixedモデル(any型)のコンシューマ]

  public boolean func() {
      ... 
      try {
          consumer = Eventch.default_consumer_admin();       /* 1 */
          tmp_proxy =consumer.obtain_notification_pull_supplier
               (ClientType.ANY_EVENT,proxyid);               /* 2 */
          proxy_pull= ProxyPullSupplierHelper.narrow(tmp_proxy);
          proxy_pull.connect_any_pull_consumer(null);        /* 3 */
          data = proxy_pull.pull();                          /* 4 */
          proxy_pull.disconnect_pull_supplier();             /* 5 */
      } catch( Exception e ) {
          ... 
      }
   ... 
  }
  1. イベントチャネル管理オブジェクトのオブジェクトリファレンスを獲得します。
  2. イベントチャネルのオブジェクトリファレンスを獲得します。
  3. イベントチャネルと接続します。
  4. イベントチャネルからイベントデータを受信します。
  5. イベントチャネルと切断します。

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

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