ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(データベース連携サービス編)

5.3 サーバアプリケーションの作成手順

  利用者が使用する初期化処理、ユーザサービス処理部についての基本形を以下に示します。

初期化処理部

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);
}

(1)CORBAサービスの初期化

  CORBAサービスを初期化するために以下のメソッドを使用します。

(2)サーバがデータベースをアクセスするための初期化

  サーバがデータベースをアクセスするための初期化を行います。
  OTS::initオペレーションのパラメタにはサーバアプリケーションのインプリメンテーションIDを指定します。
  OTS::initオペレーションはデータベースへのコネクションをオープンします。

(3)リクエストが受信可能であることをCORBAサービスへ通知

  リクエスト受信可能であることをCORBAサービスへ通知します。

  アプリケーションの登録時には、インプリメンテーション情報定義ファイルのmodeにSYNC_ENDを指定する必要があります。SYNC_ENDを指定することによって、アプリケーションが非活性化された場合やアプリケーション停止時まで復帰しないようになります。

(4)サーバがデータベースをアクセスするための終了処理

  サーバがデータベースをアクセスするための終了処理を行います。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を発行してトランザクションを終了させてください。