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

2.4 トランザクションアプリケーションから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アプリケーションでは未サポート


API対比表(C++言語)

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

CORBAアプリケーションAPI名

備考

TD::xxx_alloc()

CORBA::xxx_alloc()

  

TD::free()

CORBA::free()

  

TD::string_free()

CORBA::string_free()

  

TD::wstring_free()

CORBA::wstring_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アプリケーションでは未サポート


API対比表(COBOL)

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

CORBAアプリケーションAPI名

備考

TDXXXALLOC

CORBA-XXX-ALLOC

  

TDSTRINGSET

CORBA-STRING-SET

  

TDSTRINGGET

CORBA-STRING-GET

  

TDWSTRINGSET

CORBA-WSTRING-SET

  

TDWSTRINGGET

CORBA-WSTRING-GET

  

TDFREE

CORBA-FREE

  

TDGETSMONAME

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

TDGETCLIENTID

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

TDGETUSERINFORMATION

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

TDGETSESSIONID

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

TDSETCONTCVT

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

TDREFSESSIONID

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

TDFREESEQUENCEBUF

CORBA-FREE

  

TDSEQUENCEELEMENTGET

CORBA-SEQUENCE-ELEMENT-GET

  

TDSEQUENCEELEMENTSET

CORBA-SEQUENCE-ELEMENT-SET

  

注意

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(int 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();

}