利用者が使用する初期化処理部、およびユーザサービス処理部についての基本形を以下に示します。
■初期化処理部
MAIN.
* 初期化処理 …(1)
:
CALL "CORBA-ORB-INIT" USING
C-ARG-C
C-ARG-V
ORBID
ENV
ORB.
:
CALL "CORBA-ORB-BOA-INIT" USING
ORB
C-ARG-C
C-ARG-V
TEMP-BUF
ENV
BOA.
:
* インプリメンテーションリポジトリのオブジェクトリファレンスの取出し
MOVE FUNCTION LENG(IMPL-MOD-INTF) TO STRING-LENGTH.
CALL "CORBA-STRING-SET" USING
TEMP-BUF
STRING-LENGTH
IMPL-MOD-INTF.
CALL "FJ-IMPLEMENTAIONREP-LOOKUP-ID" USING
IMPL-REP
TEMP-BUF
ENV
IMPL.
:
* サーバ初期化メソッドのオブジェクトリファレンスの獲得
MOVE FUNCTION LENG(CORBA-ORB-OBJECTID-TRANSVR) TO
STRING-LENGTH.
CALL "CORBA-STRING-SET" USING
TEMP-BUF
STRING-LENGTH
CORBA-ORB-OBJECTID-TRANSVR.
CALL "CORBA-ORB-RESOLVE-INITIAL-REFERENCES" USING
ORB
TEMP-BUF
ENV
OTSOBJ.
* サーバ初期化メソッドの呼び出し …(2)
MOVE FUNCTION LENG(IMPL-MOD-INTF) TO STRING-LENGTH.
CALL "CORBA-STRING-SET" USING
TEMP-BUF
STRING-LENGTH
IMPL-MOD-INTF.
CALL "OTS-INIT" USING
OTSOBJ
ORB
TEMP-BUF
ENV.
:
* リクエスト受信可能であることをCORBAサービスへ通知 …(3)
CALL "CORBA-BOA-IMPL-IS-READY" USING
BOA
IMPL
* サーバがデータベースをアクセスするための終了処理 …(4)
CALL "OTS-TERM" USING
OTSOBJ
ENV.CORBAサービスを初期化するために、以下のメソッドを使用します。
CORBA-ORB-INIT
CORBA-ORB-BOA-INIT
サーバがデータベースをアクセスするための初期化を行います。
OTS-INITメソッドのパラメタには、サーバアプリケーションのインプリメンテーションIDを指定します。
OTS-INITメソッドは、データベースへのコネクションをオープンします。
リクエスト受信可能であることをCORBAサービスへ通知します。
注意
アプリケーションの登録時、インプリメンテーション情報定義ファイルのmodeに“SYNC_END”を指定する必要があります。“SYNC_END”を指定することにより、アプリケーションが非活性化された場合やアプリケーション停止時まで復帰しないようになります。
サーバがデータベースをアクセスするための終了処理を行います。OTS-TERMメソッドはデータベースへのコネクションをクローズします。
■ユーザサービス処理部
ユーザサービス処理部には、データベースへの処理を記述します。また、このユーザサービス処理部のインタフェースは、ユーザがIDL定義を行う必要があります。
ユーザサービス処理部の記述例を以下に示します。
MAIN.
:
* ユーザの操作
SQL データベースへのアクセス
:また、IDLファイルの定義例を以下に示します。
module mod {
interface intf {
void methodA(in long account1,
out long account2);
};
};注意
サーバアプリケーションが異常を検出した場合
サーバアプリケーションが以下のようなエラーを検出した場合、エラーをクライアントアプリケーションに通知する必要があります。
自プログラムの異常を検出した場合
データベースシステムからエラーが通知された場合
システムから資源不足やメモリ不足などのエラーが通知された場合
エラーが通知されたクライアントアプリケーションでは、rollbackを発行してトランザクションを終了してください。