利用者が使用する初期化処理、ユーザサービス処理部についての基本形を以下に示します。
static CORBA::ORB_ptr orb; CORBA_ORB_ObjectId_ImplementationRepository, env) impl_rep = FJ::ImplementationRep::narrow(obj); obj = impl_rep->lookup_id(_IMPL_mod_intf, env); CORBA::release( obj ); OTSobj->init(orb, _IMPL_mod_intf, env); …(2) |
CORBAサービスを初期化するために以下のメソッドを使用します。
CORBA::ORB_init()
CORBA::ORB::BOA_init()
サーバがデータベースをアクセスするための初期化を行います。
OTS::initオペレーションのパラメタにはサーバアプリケーションのインプリメンテーションIDを指定します。
OTS::initオペレーションはデータベースへのコネクションをオープンします。
リクエスト受信可能であることをCORBAサービスへ通知します。
アプリケーションの登録時には、インプリメンテーション情報定義ファイルのmodeにSYNC_ENDを指定する必要があります。SYNC_ENDを指定することによって、アプリケーションが非活性化された場合やアプリケーション停止時まで復帰しないようになります。
サーバがデータベースをアクセスするための終了処理を行います。OTS::termメソッドはデータベースへのコネクションをクローズします。
ユーザサービス処理部には、データベースへの処理を記述します。また、このユーザサービス処理部のインタフェースは、ユーザがIDL定義を行う必要があります。ユーザサービス処理部の記述例を以下に示します。
mod_intf_Impl::methodA(CORBA::long account1, CORBA::long account2, CORBA::Environment &env) } |
また、IDLファイルの定義例を以下に示します。
module mod { }; |
サーバアプリケーションが異常を検出した場合
サーバアプリケーションが以下のようなエラーを検出した場合、エラーをクライアントアプリケーションに通知する必要があります。
自プログラムの異常を検出した場合
データベースシステムからエラーが通知された場合
システムから資源不足やメモリ不足などのエラーが通知された場合
エラーが通知されたクライアントアプリケーションでは、rollbackを発行してトランザクションを終了させてください。