Interstage Application Server アプリケーション作成ガイド (イベントサービス編) |
目次
索引
![]() ![]() |
第7章 アプリケーションの開発(Java言語) |
Java言語でのPushモデルのアプリケーションの開発について説明します。
サプライヤがコンシューマにイベントデータを送信する場合、イベントチャネル上のCosEventChannelAdmin.ProxyPushConsumerに接続指示を出します。この後、イベントチャネルにorg.omg.CosEventChannelAdmin.ProxyPushConsumer.pushメソッドを発行します。イベントチャネルはユーザがコンシューマ上に実装する、PushConsumerPOAを継承したpushメソッドを呼び出します。その概要を以下に示します。
サプライヤからイベントチャネルへイベントデータを送信する手続き例と処理の流れを以下に説明します。
[Java言語によるPushモデルのサプライヤ]
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 ) { ... } ... }
イベントチャネルにイベントデータdataを送信します。(org.omg.CosEventChannelAdmin.ProxyPushConsumerはorg.omg.CosEventComm.PushConsumerを継承しています。)
void org.omg.CosEventChannelAdmin.ProxyPushConsumer.push( org.omg.CORBA.Any data );
コンシューマはイベントチャネルから送信されるイベントデータを受け取るために、PushConsumerPOAを継承したクラスを実装します。イベントチャネルはコンシューマ上の、PushConsumerPOAを継承したpushメソッドを呼び出し、コンシューマにイベントデータを送信します。コンシューマがイベントデータを受け取る例と処理の流れを以下に説明します。
[Java言語によるPushモデルのコンシューマ]
public boolean func() { ... try { consumer = EventCh.for_consumer(); /* 1 */ proxy_push = consumer.obtain_push_supplier(); /* 2 */ proxy_push.connect_push_consumer( my_obj ); /* 3 */ }catch( Exception e ){ ... } ... } class UserServant extends PushConsumerPOA { public void push( org.omg.CORBA.Any data ) /* 4 */ throws CosEventComm.Disconnected { ... /* アプリケーションの処理 */ ... return; } public void disconnect_push_consumer() { return; } }
コンシューマ側のアプリケーションでは、イベントチャネルに対して、必ずorg.omg.CosEventChannelAdmin.ProxyPushSupplier.disconnect_push_supplierを発行して、アプリケーションを終了してください。
org.omg.CosEventChannelAdmin.ProxyPushSupplier.disconnect_push_supplierを発行せずに同一のアプリケーションを再起動した場合、イベントデータが配信され、エラーメッセージes10802が出力されることがありますが、問題ありません。
目次
索引
![]() ![]() |