Interstage Application Server アプリケーション作成ガイド (イベントサービス編) |
目次
索引
![]() ![]() |
第7章 アプリケーションの開発(Java言語) |
Java言語でのPullモデルのアプリケーションの開発について説明します。
コンシューマがサプライヤからイベントデータを受信する場合、イベントチャネルのCosEventChannelAdmin.ProxyPullSupplierに接続指示を出します。イベントチャネルはユーザがサプライヤに実装する、PullSupplierPOAを継承したpull(またはtry_pull)メソッドを呼び出します。
サプライヤはイベントチャネルからイベントデータの要求を受け取るために、PullSupplierPOAを継承したpullメソッドを実装します。イベントチャネルはサプライヤ上のpullメソッドを呼び出し、サプライヤにイベントデータを要求します。その手続き例と処理の流れを以下に説明します。
[Java言語によるPullモデルのサプライヤ]
public boolean func() { ... try { supplier = EventCh.for_suppliers(); /* 1 */ proxy_pull = supplier.obtain_pull_consumer(); /* 2 */ proxy_pull.connect_pull_supplier( my_obj ); /* 3 */ } catch( Exception e ) { ... } ... } class UserServant extends PullSupplierPOA { public org.omg.CORBA.Any pull() /* 4 */ throws CosEventComm.Disconnected { ... /* アプリケーションの処理 */ ... return( rtn_value ); } public void disconnect_pull_supplier() { return; } }
コンシューマからイベントチャネルへイベントデータを要求する手続き例と処理の流れを説明します。
[Java言語によるPullモデルのコンシューマ]
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 ) { ... } ... }
イベントチャネルからイベントデータを取り出し、CORBA.Any型のreturn値を返します。イベントチャネルからイベントデータの取り出しが可能になるか、または例外が発生するまでブロックされます。(org.omg.CosEventChannelAdmin.ProxyPullSupplierはorg.omg.CosEventComm.PullSupplierを継承しています。)
org.omg.CORBA.Any org.omg.CosEventChannelAdmin.ProxyPullSupplier.pull();
イベントチャネルからイベントデータを取り出し、CORBA.Any型のreturn値を返します。イベントチャネルからイベントデータが取り出せない場合は即座に復帰します。イベントデータが取り出せた場合は、has_eventにtrueが設定されます。イベントデータが取り出せなかった場合はhas_eventにfalseが設定されます(org.omg.CosEventChannelAdmin.ProxyPullSupplierはorg.omg.CosEventComm.PullSupplierを継承しています)。
org.omg.CORBA.Any org.omg.CosEventChannelAdmin.ProxyPullSupplier.try_pull( org.omg.CORBA.Boolean_var has_event );
目次
索引
![]() ![]() |