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

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

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



イベントサービスの場合

  Mixedモデルのアプリケーション作成例と処理の流れを以下に示します。


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

CORBA_Boolean func() {
  ...
  channel = イベントチャネルのオブジェクトリファレンスの獲得                     /* 1 */
  supplier = CosEventChannelAdmin_EventChannel_for_suppliers(
                channel, &env );                                       /* 2 */
  proxy_push = CosEventChannelAdmin_SupplierAdmin_obtain_push_consumer(
                supplier, &env );                                      /* 3 */
  CosEventChannelAdmin_ProxyPushConsumer_connect_push_supplier(
                proxy_push, CORBA_OBJECT_NIL, &env);                   /* 4 */
  CosEventChannelAdmin_ProxyPushConsumer_push(
                proxy_push, push_data, &env);                          /* 5 */
  CosEventChannelAdmin_ProxyPushConsumer_disconnect_push_consumer(
                proxy_push, &env );                                    /* 6 */
  ... 
}

  1. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、“5.5 イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。

  2. CosEventChannelAdmin_EventChannel_for_suppliers()メソッドで、サプライヤ管理のオブジェクトリファレンスを獲得します。

  3. CosEventChannelAdmin_SupplierAdmin_obtain_push_consumer()メソッドで、サプライヤに接続するイベントチャネルのオブジェクトを獲得します。

  4. CosEventChannelAdmin_ProxyPushConsumer_connect_push_supplier()メソッドで、イベントチャネルとサプライヤを接続します。サプライヤまたはコンシューマとして動作する自アプリケーションのオブジェクトリファレンスをパラメタとして接続時に指定します。自アプリケーションのオブジェクトリファレンスの獲得方法については、“5.6 コンシューマとサプライヤのオブジェクトリファレンスの獲得”を参照してください。

  5. CosEventChannelAdmin_ProxyPushConsumer_push()メソッドで、イベントチャネルにイベントデータを送信します。

  6. CosEventChannelAdmin_ProxyPushConsumer_disconnect_push_consumer()メソッドで、サプライヤをイベントチャネルと切断します。


[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. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、“6.5 イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。

  2. CosEventChannelAdmin::EventChannel::for_suppliers()メソッドで、サプライヤ管理のオブジェクトリファレンスを獲得します。

  3. CosEventChannelAdmin::SupplierAdmin::obtain_push_consumer()メソッドで、サプライヤに接続するイベントチャネルのオブジェクトを獲得します。

  4. CosEventChannelAdmin::ProxyPushConsumer::connect_push_supplier()メソッドで、イベントチャネルとサプライヤを接続します。サプライヤまたはコンシューマとして動作する自アプリケーションのオブジェクトリファレンスをパラメタとして接続時に指定します。自アプリケーションのオブジェクトリファレンスの獲得方法については、“6.6 コンシューマとサプライヤのオブジェクトリファレンスの獲得”を参照してください。

  5. CosEventChannelAdmin::ProxyPushConsumer::push()メソッドで、イベントチャネルにイベントデータを送信します。

  6. CosEventChannelAdmin::ProxyPushConsumer::disconnect_push_consumer()メソッドで、サプライヤをイベントチャネルと切断します。

  7. イベントチャネルが不要である場合は、CosEventChannelAdmin::EventChannel::destroy()メソッドで、イベントチャネルを破壊します。


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

try {
  ... 
  channel = イベントチャネルのオブジェクトリファレンスの獲得                     /* 1 */
  supplier = channel.for_suppliers();                                  /* 2 */
  proxy_push = supplier.obtain_push_consumer();                        /* 3 */
  proxy_push.connect_push_supplier(proxy_push);                        /* 4 */
  proxy_push.push(push_data);                                          /* 5 */
  proxy.disconnect_push_consumer()                                     /* 6 */
  ... 
} catch (Exception e) {
  ... 
}

  1. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、“7.5 イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。

  2. for_suppliers()メソッドで、サプライヤ管理のオブジェクトリファレンスを獲得します。

  3. obtain_push_consumer()メソッドで、サプライヤに接続するイベントチャネルのオブジェクトを獲得します。

  4. connect_push_supplier()メソッドで、イベントチャネルとサプライヤを接続します。サプライヤまたはコンシューマとして動作する自アプリケーションのオブジェクトリファレンスをパラメタとして接続時に指定します。自アプリケーションのオブジェクトリファレンスの獲得方法については、“7.6 コンシューマとサプライヤのオブジェクトリファレンスの獲得”を参照してください。

  5. push()メソッドで、イベントチャネルにイベントデータを送信します。

  6. disconnect_push_consumer()メソッドで、サプライヤをイベントチャネルと切断します。


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

...
CALL "イベントチャネルのオブジェクトリファレンスの獲得"
    COS-NAMING COS-NAME ENV CHANNEL.                                  /* 1 */
CALL "COSEVENTCHANNELADMIN-EVENTCHANNEL-FOR-SUPPLIERS" USING
    CHANNEL ENV SUPPLIER.                                             /* 2 */
CALL "COSEVENTCHANNELADMIN-SUPPLIERADMIN-OBTAIN-PUSH-CONSUMER" USING
    SUPPLIER ENV PROXY-PUSH.                                          /* 3 */
CALL "COSEVENTCHANNELADMIN-PROXYPUSHCONSUMER-CONNECT-PUSH-SUPPLIER" USING
    PROXY-PUSH CORBA-OBJECT-NIL ENV.                                  /* 4 */
CALL "COSEVENTCHANNELADMIN-PROXYPUSHCONSUMER-PUSH" USING
    PROXY-PUSH PUSH-DATA ENV.                                         /* 5 */
CALL "COSEVENTCHANNELADMIN-PROXYPUSHCONSUMER-DISCONNECT-PUSH-CONSU" USING
    PROXY-PUSH ENV.                                                   /* 6 */
...

  1. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、“8.5 イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。

  2. COSEVENTCHANNELADMIN-EVENTCHANNEL-FOR-SUPPLIERS関数で、サプライヤ管理のオブジェクトリファレンスを獲得します。

  3. COSEVENTCHANNELADMIN-SUPPLIERADMIN-OBTAIN-PUSH-CONSUMER関数で、サプライヤに接続するイベントチャネルのオブジェクトを獲得します。

  4. COSEVENTCHANNELADMIN-PROXYPUSHCONSUMER-CONNECT-PUSH-SUPPLIER関数で、イベントチャネルとサプライヤを接続します。サプライヤまたはコンシューマとして動作する自アプリケーションのオブジェクトリファレンスをパラメタとして接続時に指定します。自アプリケーションのオブジェクトリファレンスの獲得方法については、“8.6 コンシューマとサプライヤのオブジェクトリファレンスの獲得”を参照してください。

  5. COSEVENTCHANNELADMIN-PROXYPUSHCONSUMER-PUSH関数で、イベントチャネルにイベントデータを送信します。

  6. COSEVENTCHANNELADMIN-PROXYPUSHCONSUMER-DISCONNECT-PUSH-CONSU関数で、サプライヤをイベントチャネルと切断します。


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

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


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

CORBA_Boolean func() {
  ...
  channel = イベントチャネルのオブジェクトリファレンスの獲得              /* 1 */
  supplier = CosNotifyChannelAdmin_EventChannel_get_default_supplier_admin(
                channel, &env );                                 /* 2 */
  proxy_push= CosNotifyChannelAdmin_SupplierAdmin_obtain_notification_push_consumer (
                supplier,ctype,&proxy_id, &env);                 /* 3 */
  CosNotifyChannelAdmin_StructuredProxyPushConsumer_connect_structured_push_supplier(
                proxy_push, CORBA_OBJECT_NIL, &env );            /* 4 */
  CosNotifyChannelAdmin_StructuredProxyPushConsumer_push_structured_event(
                proxy_push, push_data, &env );                   /* 5 */
  CosNotifyChannelAdmin_StructuredProxyPushConsumer_disconnect_structured_push_consumer(
                proxy_push, &env );                              /* 6 */
  ... 
}

  1. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、“5.5 イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。

  2. CosNotifyChannelAdmin_EventChannel_get_default_supplier_admin()メソッドで、サプライヤ管理のオブジェクトリファレンスを獲得します。

  3. CosNotifyChannelAdmin_SupplierAdmin_obtain_notification_push_consumer()メソッドで、サプライヤに接続するイベントチャネルのオブジェクトを獲得します。

  4. CosNotifyChannelAdmin_StructuredProxyPushConsumer_connect_structured_push_supplier()メソッドで、イベントチャネルとサプライヤを接続します。サプライヤまたはコンシューマとして動作する自アプリケーションのオブジェクトリファレンスをパラメタとして接続時に指定します。自アプリケーションのオブジェクトリファレンスの獲得方法については、“5.6 コンシューマとサプライヤのオブジェクトリファレンスの獲得”を参照してください。

  5. CosNotifyChannelAdmin_StructuredProxyPushConsumer_push_structured_event()メソッドで、イベントデータを送信します。

  6. CosNotifyChannelAdmin_StructuredProxyPushConsumer_disconnect_structured_push_consumer()メソッドで、サプライヤをイベントチャネルと切断します。


[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. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、“6.5 イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。

  2. CosNotifyChannelAdmin::EventChannel::default_supplier_admin()メソッドで、サプライヤ管理のオブジェクトリファレンスを獲得します。

  3. CosNotifyChannelAdmin::SupplierAdmin::obtain_notification_push_consumer()メソッドで、サプライヤに接続するイベントチャネルのオブジェクトを獲得します。

  4. CosNotifyChannelAdmin::StructuredProxyPushConsumer::connect_structured_push_consumer()メソッドで、イベントチャネルとサプライヤを接続します。サプライヤまたはコンシューマとして動作する自アプリケーションのオブジェクトリファレンスをパラメタとして接続時に指定します。自アプリケーションのオブジェクトリファレンスの獲得方法については、“6.6 コンシューマとサプライヤのオブジェクトリファレンスの獲得”を参照してください。

  5. CosNotifyComm::StructuredPushConsumer::push_structured_event()メソッドで、イベントデータを送信します。

  6. CosNotifyComm::StructuredPushConsumer::disconnect_structured_push_consumer()メソッドで、サプライヤをイベントチャネルと切断します。

  7. イベントチャネルが不要である場合は、CosEventChannelAdmin::EventChannel::destroy()メソッドで、イベントチャネルを破壊します。


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

try {
  ...
  channel = イベントチャネルのオブジェクトリファレンスの獲得              /* 1 */
  supplier = channel.default_supplier_admin();                   /* 2 */
  proxy_push = StructuredProxyPushConsumerHelper.narrow(
                 supplier.obtain_notification_push_consumer(
                   ClientType.STRUCTURED_EVENT, proxyID));       /* 3 */
  proxy_push.connect_structured_push_supplier(proxy_push);       /* 4 */
  proxy_push.push_structured_event(push_data);                   /* 5 */
  proxy_push.disconnect_structured_push_consumer();              /* 6 */
  ... 
} catch (Exception e) {
  ... 
}

  1. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、“7.5 イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。

  2. default_supplier_admin()メソッドで、サプライヤ管理のオブジェクトリファレンスを獲得します。

  3. obtain_notification_push_consumer()メソッドで、サプライヤに接続するイベントチャネルのオブジェクトを獲得し、StructuredProxyPushConsumerインスタンス型に変換します。

  4. connect_structured_push_supplier()メソッドで、イベントチャネルとサプライヤを接続します。サプライヤまたはコンシューマとして動作する自アプリケーションのオブジェクトリファレンスをパラメタとして接続時に指定します。自アプリケーションのオブジェクトリファレンスの獲得方法については、“7.6 コンシューマとサプライヤのオブジェクトリファレンスの獲得”を参照してください。

  5. push_structured_event()メソッドで、イベントデータを送信します。

  6. disconnect_structured_push_consumer()メソッドで、サプライヤをイベントチャネルと切断します。


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

...
CALL "イベントチャネルのオブジェクトリファレンスの獲得"
    COS-NAMING COS-NAME ENV CHANNEL.                                  /* 1 */
CALL "COSNOTIFYCHANNELADMIN-EVENTCHANNEL--GET-DEFAULT-SUPPLIER-ADMIN" USING
    CHANNEL ENV SUPPLIER.                                             /* 2 */
CALL "COSNOTIFYCHANNELADMIN-SUPPLIERADMIN-OBTAIN-NOTIFICATION-PUSH-CONSUMER" USING
    SUPPLIER CTIPE PROXY-ID ENV PROXY-PUSH.                           /* 3 */
CALL "COSNOTIFYCHANNELADMIN -PROXYPUSHCONSUMER-CONNECT-PUSH-SUPPLIER" USING
    PROXY-PUSH CORBA-OBJECT-NIL ENV.                                  /* 4 */
CALL "COSNOTIFYCHANNELADMIN-STRUCTUREDPROXYPUSHCONSUMER-PUSH-STRUCTURED-EVENT" USING
    PROXY-PUSH PUSH-DATA ENV.                                         /* 5 */
CALL "COSNOTIFYCHANNELADMIN-STRUCTUREDPROXYPUSHCONSUMER-DISCONNECT-STRUCTURED-PUSH-CONSUMER" USING
    PROXY-PUSH ENV.                                                   /* 6 */
...

  1. イベントチャネルのオブジェクトリファレンスを獲得します。イベントチャネルのオブジェクトリファレンスの獲得方法については、“8.5 イベントチャネルのオブジェクトリファレンスの獲得”を参照してください。

  2. COSNOTIFYCHANNELADMIN-EVENTCHANNEL--GET-DEFAULT-SUPPLIER-ADMIN関数で、サプライヤ管理のオブジェクトリファレンスを獲得します。

  3. COSNOTIFYCHANNELADMIN-SUPPLIERADMIN-OBTAIN-NOTIFICATION-PUSH-CONSUMER関数で、サプライヤに接続するイベントチャネルのオブジェクトを獲得します。

  4. COSNOTIFYCHANNELADMIN-PROXYPUSHCONSUMER-CONNECT-PUSH-SUPPLIER関数で、イベントチャネルとサプライヤを接続します。サプライヤまたはコンシューマとして動作する自アプリケーションのオブジェクトリファレンスをパラメタとして接続時に指定します。自アプリケーションのオブジェクトリファレンスの獲得方法については、“8.6 コンシューマとサプライヤのオブジェクトリファレンスの獲得”を参照してください。

  5. COSNOTIFYCHANNELADMIN-STRUCTUREDPROXYPUSHCONSUMER-PUSH-STRUCTURED-EVENT関数で、イベントデータを送信します。

  6. COSNOTIFYCHANNELADMIN-STRUCTUREDPROXYPUSHCONSUMER-DISCONNECT-STRUCTURED-PUSH-CONSUMER関数で、サプライヤをイベントチャネルと切断します。


注意

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