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

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. イベントチャネルと切断します。