トランザクションアプリケーションをCORBAアプリケーションへ移行する場合の手順を説明します。
(1) APIの移行
トランザクションアプリケーションで使用しているAPIを、CORBAアプリケーション用のAPIに変更します。
トランザクションアプリケーションとCORBAアプリケーションの各言語のAPI対比表を以下に示します。
トランザクションアプリケーション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名 | 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名 | 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定義例とともに以下に示します。
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アプリケーションに移行する場合は、下線部分を変更します。
#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();
}