Interstage Application Server アプリケーション作成ガイド (CORBAサービス編)
目次 索引 前ページ次ページ

第3章 CORBAワークユニット> 3.2 旧バージョンのアプリケーションからの移行方法

3.2.1 トランザクションアプリケーションからCORBAアプリケーションへ移行

 トランザクションアプリケーションをCORBAアプリケーションへ移行する場合の手順を説明します。

(1) APIの移行

 トランザクションアプリケーションで使用しているAPIを、CORBAアプリケーション用のAPIに変更します。

 トランザクションアプリケーションとCORBAアプリケーションのAPI対比表を以下に示します。

API対比表(C言語)

トランザクションアプリケーションAPI名

CORBAアプリケーションAPI名

備考

TD_xxx_alloc()

CORBA_xxx_alloc()

 

TD_free()

CORBA_free()

 

TD_get_smo_name()

CORBAアプリケーションでは未サポート

TD_get_client_id()

CORBAアプリケーションでは未サポート

TD_get_user_information()

CORBAアプリケーションでは未サポート

TD_getsessionid()

CORBAアプリケーションでは未サポート

TD_setcontcvt()

CORBAアプリケーションでは未サポート

TD_refsessionid()

CORBAアプリケーションでは未サポート


 CORBAアプリケーション未サポート機能を使用する場合、トランザクションアプリケーションを使用してください。

(2) インクルードファイルの修正

 トランザクションアプリケーションでは、トランザクションアプリケーション用スケルトンのインクルードファイル(モジュール名_インタフェース名.h)をインクルードしていましたが、CORBAアプリケーションでは、CORBAアプリケーション用スケルトンのヘッダファイル(IDLファイル名.h)をインクルードするように修正します。

(3) mainロジックの追加

 CORBAアプリケーションでは、main関数を持つ実行モジュールを作成する必要があります。
 そのため、main関数を作成し、CORBAアプリケーションの初期化処理を行う必要があります。

【移行例】

 トランザクションアプリケーションからCORBAアプリケーションに移行するためのアプリケーションソースの修正例を、IDL定義例とともに以下に示します。

■IDL定義(test.idl)

module MOD {
  interface INTF {
    long OPE(in string para1);
  };
};

■トランザクションアプリケーションのソース

#include "orb.h"
#include"MOD_INTF.h"

CORBA_long MOD_INTF_OPE(CORBA_string para1)
{
  CORBA_long ret = 0;
  if (strcmp(para1,"test") == 0) {
    ret = 0;
  } else {
    ret = 1;
  }
  TD_free(para1);
  return ret;
}

■CORBAアプリケーションへのソース修正例

 上記トランザクションアプリケーションをCORBAアプリケーションに移行する場合には、下線部分を変更します。

#include  "orb.h"
#include  "test.h"
CORBA_long MOD_INTF_OPE(CORBA_string para1)
{
  CORBA_long ret = 0;
  if (strcmp(para1,"test") == 0) {
    ret = 0;
  } else {
    ret = 1;
  }
  CORBA_free(para1);
  return ret;
}
void main(argc,char **argv)
{
  int current_argc = argc;
  orb = CORBA_ORB_init(....);

  boa = CORBA_ORB_BOA_init(....);

  impl_ret = CORBA_ORB_resolve_initial_references(....);

  impl = FJ_Implementation_lookup_id(....);

  intf = CORBA_Repository_lookup_id(....);

  CORBA_BOA_impl_is_ready(....);

  exit();
}

目次 索引 前ページ次ページ

Copyright 2006 FUJITSU LIMITED