サーバアプリケーションを作成する場合は、以下の図のように、アプリケーションをmain実装部、メソッド実装部に分ける必要があります。なお、メソッド実装部は動的ライブラリとして作成します。たとえば、Pushモデルのコンシューマの場合、main部はイベントチャネルに接続するまでの部分で、pushメソッドの部分がメソッド実装部となります。
注意
Oracle Solaris Studio 12.2以降を使用してアプリケーションを作成する場合は、CCコマンドに「-features=rvalueref」を指定して実行してください。指定しないで翻訳した場合、以下のエラーが発生することがあります。
Error: ……… requires an lvalue. エラー: ……… を初期化するには左辺値が必要です.
参照
アプリケーションを翻訳する場合に使用するインクルードファイルについては、「A.1 インクルードファイル」を参照してください。
■main実装部
main実装部に結合するスタブライブラリについては、「A.3 スタブライブラリ」を参照してください。
参照
CORBAサービスに必要なライブラリについては、「アプリケーション作成ガイド(CORBAサービス編)」の「提供プログラム」を参照してください。
サーバアプリケーションのインプリメンテーション情報として、インプリメンテーションリポジトリに以下の定義情報(インタフェースリポジトリIDとの対応付け)を設定します。OD_impl_instコマンドに-axオプションを指定して実行し、インプリメンテーションリポジトリを登録します。
(1)インタフェースリポジトリID = (2)動的ライブラリ名
(1)インタフェースリポジトリID
実装するインタフェースに対応したインタフェースリポジトリIDを指定します。
イベントサービスの場合
通信モデル | サプライヤ | コンシューマ |
---|---|---|
Push | IDL:CosEventComm/PushSupplier:1.0 | IDL:CosEventComm/PushConsumer:1.0 |
Pull | IDL:CosEventComm/PullSupplier:1.0 | IDL:CosEventComm/PullConsumer:1.0 |
Mixed | IDL:CosEventComm/PushSupplier:1.0 | IDL:CosEventComm/PullConsumer:1.0 |
ノーティフィケーションサービスの場合
通信モデル | サプライヤ | コンシューマ |
---|---|---|
Mixed | IDL:CosEventComm/PushSupplier:1.0 | IDL:CosEventComm/PullConsumer:1.0 |
Mixed | IDL:CosNotifyComm/StructuredPushSupplier:1.0 | IDL:CosNotifyComm/StructuredPullConsumer:1.0 |
(2)動的ライブラリ名
動的ライブラリとして作成したメソッド実装部のオブジェクト名を指定します。
絶対パスで指定してください。
注意
PushモデルのコンシューマおよびPullモデルのサプライヤの場合は、インプリメンテーション情報に以下を指定してスレッドモードを設定してください。
thr_conc_init=2以上の値
SSL通信を行う場合は、インプリメンテーション情報に以下を指定してください。
ssl=ON ior=1.1
■メソッド実装部
サーバアプリケーションでは、以下のメソッドを実装します。
イベントサービスの場合
通信モデル | サプライヤ | コンシューマ |
---|---|---|
Push | CosEventComm_PushSupplier_impl::disconnect_push_supplier() | CosEventComm_PushConsumer_impl::push() |
Pull | CosEventComm_PullSupplier_impl::pull() | CosEventComm_PullConsumer_impl::disconnect_pull_consumer() |
Mixed | CosEventComm_PushSupplier_impl::disconnect_push_supplier() | CosEventComm_PullConsumer_impl::disconnect_pull_consumer() |
ノーティフィケーションサービスの場合
通信モデル | サプライヤ | コンシューマ |
---|---|---|
Mixed | CosEventComm_PushSupplier_impl::disconnect_push_supplier() | CosEventComm_PullConsumer_impl::disconnect_pull_consumer() |
参照
メソッド実装部に結合するスケルトンオブジェクトについては、「A.4 スケルトンオブジェクト」を参照してください。