利用者が使用する初期化処理部、およびユーザサービス処理部についての基本形を以下に示します。
■初期化処理部
main(argc,argv) int argc; char *argv[]; { : static CORBA_ORB orb; static CORBA_BOA boa; static CORBA_ImplementationDef impl; static FJ_ImplementationRep impl_rep; static CORBA_Environment env; CORBA_Object OTSobj; Int current_argc = argc; : /* CORBAサービスの初期化 */ orb = CORBA_ORB_init(¤t_argc, argv, FJ_OM_ORBid, &env); …(1) boa = CORBA_ORB_BOA_init(orb, ¤t_argc, argv, CORBA_BOA_OAid, &env); /* インプリメンテーションリポジトリのOR取得 */ impl_rep = CORBA_ORB_resolve_initial_references( orb, CORBA_ORB_ObjectId_ImplementationRepository,&env); impl = FJ_ImplementationRep_lookup_id(impl_rep, _IMPL_mod_intf, &env); ... /* サーバがデータベースをアクセスするための初期化 */ OTSobj = CORBA_ORB_resolve_initial_references(orb, CORBA_ORB_ObjectId_TransactionServerInit, &env); OTS_init(OTSobj, orb, _IMPL_mod_intf, &env); …(2) /* リクエスト受信可能であることをCORBAサービスへ通知 */ CORBA_BOA_impl_is_ready(boa, impl, &env); …(3) /* サーバがデータベースをアクセスするための終了処理 */ OTS_term(OTSobj, &env); …(4) }
CORBAサービスを初期化するために、以下のメソッドを使用します。
CORBA_ORB_init()
CORBA_ORB_BOA_init()
サーバがデータベースをアクセスするための初期化を行います。
OTS_initメソッドのパラメタには、サーバアプリケーションのインプリメンテーションリポジトリIDを指定します。
OTS_initメソッドは、データベースへのコネクションをオープンします。
リクエスト受信可能であることをCORBAサービスへ通知します。
注意
アプリケーションの登録時、CORBAアプリケーション情報定義ファイルのmodeに「SYNC_END」を指定する必要があります。「SYNC_END」を指定することにより、アプリケーションが非活性化された場合やアプリケーション停止時まで復帰しないようになります。
サーバがデータベースをアクセスするための終了処理を行います。OTS_termメソッドは、データベースへのコネクションをクローズします。
■ユーザサービス処理部
ユーザサービス処理部には、データベースへの処理を記述します。また、このユーザサービス処理部のインタフェースは、ユーザがIDL定義を行う必要があります。
ユーザサービス処理部の記述例を以下に示します。
mod_intf_methodA(mod_intf obj, CORBA_long account1, CORBA_long *account2, CORBA_Environment *env) { /* ユーザの操作 */ SQL データベースへのアクセス : }
また、IDLファイルの定義例を以下に示します。
module mod { interface intf { void methodA(in long account1, out long account2); }; };
注意
サーバアプリケーションが異常を検出した場合
サーバアプリケーションが以下のようなエラーを検出した場合、エラーをクライアントアプリケーションに通知する必要があります。
自プログラムの異常を検出した場合
データベースシステムからエラーが通知された場合
システムから資源不足やメモリ不足などのエラーが通知された場合
エラーが通知されたクライアントアプリケーションでは、rollbackを発行してトランザクションを終了してください。