Interstage Application Server アプリケーション作成ガイド (データベース連携サービス編) |
目次 索引 |
第5章 サーバアプリケーションの開発(CORBAアプリケーション/C++言語) |
利用者が使用する初期化処理、ユーザサービス処理部についての基本形を以下に示します。
static CORBA::ORB_ptr orb; static CORBA::BOA_ptr boa; static FJ::ImplementationRep_ptr impl_rep; static CORBA::ImplementationDef_ptr impl; static OTS_ptr OTSobj; static CORBA::Object_ptr obj; static CORBA::Environment env; main(int argc, char *argv[]) { : /* CORBAサービスの初期化 */ orb = CORBA::ORB_init(argc, argv, FJ_OM_ORBid, env); …(1) boa = orb->BOA_init(argc, argv, CORBA_BOA_OAid, env); obj = orb->resolve_initial_references( CORBA_ORB_ObjectId_ImplementationRepository, env) impl_rep = FJ::ImplementationRep::narrow(obj); obj = impl_rep->lookup_id(_IMPL_mod_intf, env); impl = CORBA::ImplementationDef::_narrow(obj); /* サーバがデータベースをアクセスするための初期化 */ obj = orb->resolve_initial_references( CORBA_ORB_ObjectId_TransactionServerInit, env); OTSobj =OTS::_narrow(obj); CORBA::release( obj ); OTSobj->init(orb, _IMPL_mod_intf, env); …(2) /* リクエスト受信可能であることをCORBAサービスへ通知 */ boa->impl_is_ready(impl, env); …(3) /* サーバがデータベースをアクセスするための終了処理 …(4) OTSobj->term(env); } |
CORBAサービスを初期化するために以下のメソッドを使用します。
サーバがデータベースをアクセスするための初期化を行います。
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) { /* ユーザの操作 */ SQL データベースへのアクセス ................. } |
また、IDLファイルの定義例を以下に示します。
module mod { interface intf { void methodA(in long account1, out long account2); }; }; |
サーバアプリケーションが異常を検出した場合
サーバアプリケーションが以下のようなエラーを検出した場合、エラーをクライアントアプリケーションに通知する必要があります。
エラーが通知されたクライアントアプリケーションでは、rollbackを発行してトランザクションを終了させてください。
目次 索引 |