Oracle Tuxedo CORBAアプリケーションの開発
Oracle Tuxedo CORBAクライアントおよびサーバー・アプリケーションの作成方法の詳細は、Oracle Tuxedoオンライン・ドキュメントの次のドキュメントを参照してください。
注意:
|
Oracle Tuxedo CORBA JavaクライアントとOracle Tuxedo CORBA JavaクライアントORBはTuxedo 8.1で非推奨になり、サポートされなくなりました。Oracle Tuxedo CORBA JavaクライアントおよびOracle Tuxedo CORBA JavaクライアントORBのテキスト参照、関連するコード・サンプルはすべて、サード・パーティのJava ORBライブラリの実装/実行の支援と、プログラマによる参照のみに使用する必要があります。
|
サード・パーティのCORBA Java ORBのテクニカル・サポートは、各ベンダーによって提供されます。Oracle Tuxedoでは、サード・パーティのCORBA Java ORBに関する技術的なサポートまたはドキュメントは提供していません。
Oracle Tuxedo CORBAアプリケーションの開発プロセスの概要
表3-1は、Oracle Tuxedo CORBAアプリケーションの開発プロセスの概略です。
表3-1
Oracle Tuxedo CORBAアプリケーションの開発プロセス
|
|
|
Oracle Tuxedoアプリケーションで使用する各CORBAインタフェースについて、Object Management Group (OMG)インタフェース定義言語(IDL)コードを記述します。
|
|
CORBAクライアント・スタブおよびスケルトンを生成します。
|
|
CORBAサーバー・アプリケーションを記述します。
|
|
CORBAクライアント・アプリケーションを記述します。
|
|
|
|
|
|
|
|
CORBAサーバー・アプリケーションをコンパイルします。
|
|
CORBAクライアント・アプリケーションをコンパイルします。
|
|
Oracle Tuxedo CORBAアプリケーションを起動します。
|
開発プロセスの各手順は、以降の項で詳しく説明します。
図3-1は、Oracle Tuxedo CORBAアプリケーションを開発するプロセスを示しています。
このトピックでは、Simpappサンプル・アプリケーションを使用して開発プロセスを説明していきます。
Simpappサンプル・アプリケーションのCORBAサーバー・アプリケーションでは、次の2つのメソッドを備えたCORBAオブジェクトの実装が提供されます。
•
|
upperメソッド。CORBAクライアント・アプリケーションから受け取った文字列を大文字に変換します。
|
•
|
lowerメソッド。CORBAクライアント・アプリケーションから受け取った文字列を小文字に変換します。
|
図3-2は、Simpappサンプル・アプリケーションのしくみを示しています。
Simpappサンプル・アプリケーションのソース・ファイルは、Oracle Tuxedoソフトウェアの
$TUXDIR\samples\corba\simpappディレクトリにあります。Simpappサンプル・アプリケーションをビルドおよび実行する手順は、同じディレクトリの
Readme.txtファイルに記載されています。
注意:
|
Simpappサンプル・アプリケーションは、CORBA C++のクライアント・アプリケーションとサーバー・アプリケーションのビルドを例示します。
|
Oracle Tuxedoでは、Oracle Tuxedo CORBAアプリケーションの開発を例示および支援するサンプル・アプリケーションがいくつか用意されています。サンプル・アプリケーションの概要については、Oracle Tuxedoオンライン・ドキュメントの
「サンプル」を参照してください。
Oracle Tuxedo CORBAアプリケーションの記述では、まず最初に、Object Management Group (OMG)インタフェース定義言語(IDL)を使用してすべてのCORBAインタフェースとそれらのメソッドを指定します。OMG IDLで記述したインタフェース定義を使用すると、完全にCORBAインタフェースを定義し、各操作の引数を指定できます。OMG IDLは、純粋な宣言型言語です。つまり、実装の詳細は含まれていません。OMG IDLで指定される操作は、CORBAバインディングを提供する任意の言語で記述し、呼び出すことができます。
Simpappサンプル・アプリケーションは、
表3-2のリストにあるCORBAインタフェースを実装します。
表3-2
Simpappサンプル・アプリケーションのCORBAインタフェース
|
|
|
|
Simpleオブジェクトのオブジェクト参照を作成します。
|
|
|
|
|
リスト3‑1は、Simpappサンプル・アプリケーションのCORBAインタフェースを定義する
simple.idlファイルを示しています。
リスト3-1
Simpappサンプル・アプリケーションのOMG IDLコード
#pragma prefix "beasys.com"
interface Simple
{
//Convert a string to lower case (return a new string)
string to_lower(in string val);
//Convert a string to upper case (in place)
void to_upper(inout string val);
};
interface SimpleFactory
{
Simple find_simple();
};
ステップ2: CORBAクライアント・スタブおよびスケルトンの生成
OMG IDLで定義されたインタフェース仕様は、CORBAクライアント・アプリケーションのCORBAクライアント・スタブおよびCORBAサーバー・アプリケーションのスケルトンを生成するためにIDLコンパイラで使用されます。CORBAクライアント・スタブは、CORBAクライアント・アプリケーションによってすべての操作呼出しで使用されます。記述したコードと一緒にスケルトンを使用すると、CORBAオブジェクトを実装するCORBAサーバー・アプリケーションを作成できます。
開発の過程では、次のコマンドのいずれかを使用して、OMG IDLファイルをコンパイルし、Oracle Tuxedo CORBAクライアント・アプリケーションおよびサーバー・アプリケーションのCORBAクライアント・スタブおよびスケルトンを生成します。
•
|
CORBA C++のクライアント・アプリケーションとサーバー・アプリケーションを作成する場合は、 idlコマンドを使用します。 idlコマンドの説明については、Oracle Tuxedoオンライン・ドキュメントの 『Oracle Tuxedoコマンド・リファレンス』を参照してください。
|
表3-3に、
idlコマンドによって作成されるファイルの一覧を示します。
|
|
|
|
|
リクエストを送信するために生成されたコードを格納します。
|
CORBAクライアント・スタブ・ヘッダー・ファイル
|
|
OMG IDLファイルで指定された各インタフェースと型のクラス定義を格納します。
|
|
|
OMG IDLファイルで指定した各インタフェース用のスケルトンが含まれます。実行時に、スケルトンではCORBAクライアントのリクエストをCORBAサーバー・アプリケーションの適切な操作にマッピングします。
|
|
|
|
|
|
OMG IDLファイルで指定されたインタフェースの操作を実装するメソッドのシグネチャを格納します。
|
|
|
OMG IDLファイルで指定された各インタフェースの初期クラス定義を格納します。
|
ステップ3: CORBAサーバー・アプリケーションの記述
Oracle Tuxedoソフトウェアでは、CORBA C++サーバー・アプリケーションがサポートされています。CORBAサーバー・アプリケーションを作成する手順は次のとおりです。
1.
|
各インタフェースの操作を実装するメソッドを記述します。
|
2.
|
CORBA Serverオブジェクトを作成します。
|
5.
|
CORBAサーバー・アプリケーションを解放します。
|
注意:
|
Oracle Tuxedoは、Linux/HP-UX/Solarisでは標準C++ヘッダー・ファイルの新しいスタイルを使用し、AIXではヘッダー・ファイルの以前のスタイルを使用します。どのヘッダー・タイプを使用するかは、 OBB_ANSI_CPPマクロを確認して判別できます。
|
OBB_ANSI_CPPが定義されている場合、標準C++ヘッダーが含まれています。
OBB_ANSI_CPPが定義されていない場合、以前のCヘッダーが含まれています。
OMG IDLファイルをコンパイルした後は、ファイルの各インタフェースの操作を実装するメソッドを記述する必要があります。実装ファイルには、以下のものが含まれます。
•
|
OMG IDLファイルで指定された各操作のメソッド宣言
|
•
|
各インタフェースの実装のコンストラクタ(実装は任意)
|
•
|
activate_object()メソッドと deactivate_object()メソッド(オプション)
|
activate_object()メソッドと
deactivate_object()メソッドの中では、オブジェクトのアクティブ化と非アクティブ化に関連する特定のステップを実行するコードを記述します。詳細は、Oracle Tuxedoオンライン・ドキュメントの
『CORBAサーバー・アプリケーションの作成』を参照してください。
実装ファイルは手作業で記述できます。
idlコマンドには、実装ファイルのテンプレートを生成するオプションがあります。
リスト3‑2は、Simpappサンプル・アプリケーションの
Simpleインタフェースと
SimpleFactoryインタフェースのC++実装を示しています。
リスト3-2
SimpleインタフェースとSimpleFactoryインタフェースのC++実装
// Implementation of the Simple_i::to_lower method which converts
// a string to lower case.
char* Simple_i::to_lower(const char* value)
{
CORBA::String_var var_lower = CORBA::string_dup(value);
for (char* ptr = var_lower; ptr && *ptr; ptr++) {
*ptr = tolower(*ptr);
}
return var_lower._retn();
}
// Implementation of the Simple_i::to_upper method which converts
// a string to upper case.
void Simple_i::to_upper(char*& valuel)
{
CORBA::String_var var_upper = value1;
var_upper = CORBA::string_dup(var_upper.in());
for (char* ptr = var_upper; ptr && *ptr; ptr++) {
*ptr = toupper(*ptr);
}
value = var_upper._retn();
}
// Implementation of the SimpleFactory_i::find_simple method which
// creates an object reference to a Simple object.
Simple_ptr SimpleFactory_i::find_simple()
{
CORBA::Object_var var_simple_oref =
TP::create_object_reference(
_tc_Simple->id(),
"simple",
CORBA::NVList::_nil()
);
}
Serverオブジェクトでは、次のタスクが実行されます。
•
|
CORBAサーバー・アプリケーションを初期化します。初期化の過程では、ファクトリの登録、CORBAサーバー・アプリケーションで必要とされるリソースの割り当て、およびXAリソース・マネージャの起動(必要な場合)が行われます。
|
•
|
CORBAサーバー・アプリケーションの停止とクリーンアップを実行します。
|
•
|
CORBAクライアントのリクエストを満たすために必要なCORBAオブジェクトをインスタンス化します。
|
CORBAサーバー・アプリケーションでは、Serverオブジェクトはすでにインスタンス化されており、Serverオブジェクトのヘッダー・ファイルを利用することができます。サーバー・アプリケーションを初期化および解放するメソッド、およびサーバーント・オブジェクトを作成するメソッド(必要な場合)は、独自に実装してください。
リスト3‑3は、Simpappサンプル・アプリケーションのServerオブジェクトのC++コードを示しています。
リスト3-3
CORBA C++ Serverオブジェクト
static CORBA::Object_var static_var_factory_reference;
// Method to start up the server
CORBA::Boolean Server::initialize(int argc, char* argv[])
{
// Create the Factory Object Reference
static_var_factory_reference =
TP::create_object_reference(
_tc_SimpleFactory->id(),
"simple_factory",
CORBA::NVList::_nil()
);
// Register the factory reference with the FactoryFinder
TP::register_factory(
static_var_factory_reference.in(),
_tc_SimpleFactory->id()
);
return CORBA_TRUE;
}
// Method to shutdown the server
void Server::release()
{
// Unregister the factory.
try {
TP::unregister_factory(
static_var_factory_reference.in(),
_tc_SimpleFactory->id()
);
}
catch (...) {
TP::userlog("Couldn't unregister the SimpleFactory");
}
}
// Method to create servants
Tobj_Servant Server::create_servant(const char*
interface_repository_id)
{
if (!strcmp(interface_repository_id,
_tc_SimpleFactory->id())) {
return new SimpleFactory_i();
}
if (!strcmp(interface_repository_id,
_tc_Simple->id())) {
return new Simple_i();
}
return 0;
}
CORBAサーバーを開発する過程では、オブジェクトのアクティブ化ポリシーを設定して、どのイベントでオブジェクトがアクティブ化および非アクティブ化されるのかを指定します。
CORBAサーバー・アプリケーションでは、実装構成ファイル(ICF)でオブジェクトのアクティブ化ポリシーを指定します。
genicfコマンドを使用すると、テンプレートのICFファイルが作成されます。
注意:
|
トランザクション・ポリシーもICFファイルで定義します。Oracle Tuxedo CORBAアプリケーションでのトランザクションの使用については、Oracle Tuxedoオンライン・ドキュメントの 『CORBAトランザクションの使用』を参照してください。
|
Oracle Tuxedoソフトウェアでは、
表3-4のリストにあるアクティブ化ポリシーがサポートされています。
|
|
|
オブジェクトの操作の呼出しの間だけオブジェクトをアクティブ化します。これはデフォルトのアクティブ化ポリシーです。
|
|
操作が呼び出されたときにオブジェクトをアクティブ化します。オブジェクトがトランザクションのスコープ内でアクティブ化された場合、そのオブジェクトはトランザクションがコミットまたはロールバックされるまでは、アクティブ化されたままです。
|
|
操作が呼び出されたときにオブジェクトをアクティブ化し、次のいずれかが起こったときのみオブジェクトを非アクティブ化します。
•
|
サーバー・アプリケーションの存在するプロセスが停止されました。
|
•
|
TP::deactivateEnable()メソッド(C++)がオブジェクトで呼び出されました。
|
|
Simpappサンプル・アプリケーションの
Simpleインタフェースには、メソッドのデフォルトのアクティブ化ポリシーが割り当てられます。オブジェクトの状態の管理およびアクティブ化ポリシーの定義の詳細は、Oracle Tuxedoオンライン・ドキュメントの
『CORBAサーバー・アプリケーションの作成』を参照してください。
CORBAクライアント・アプリケーションから容易に見つかるように、CORBAサーバー・アプリケーションでファクトリを管理するには、そのファクトリをFactoryFinderオブジェクトに登録するコードを記述する必要があります。
CORBAサーバー・アプリケーションで管理されるファクトリを登録するコードを記述するには、次の手順に従います。
create_object_reference()メソッドの呼出しをコードに含めます。その際には、ファクトリのOMG IDLインタフェースのインタフェース・リポジトリIDまたはオブジェクトID (OID)を文字列形式で指定します。ルーティング基準を指定することも可能です。
2.
|
ファクトリをOracle Tuxedoドメインに登録します。
|
register_factory()メソッドを使用すると、Oracle TuxedoドメインのFactoryFinderオブジェクトにファクトリを登録できます。
register_factory()メソッドでは、ファクトリのオブジェクト参照と文字列識別子を指定する必要があります。
リスト3‑4は、ファクトリを作成および登録する、Simpappサンプル・アプリケーションのコードを示しています。
...
CORBA::Object_var v_reg_oref =
TP:create_object_reference(
_tc.SimpleFactory->id(), //Factory Interface ID
���simplefactory���, //Object ID
CORBA::NVList::_nil() //Routing Criteria
);
TP::register_factory(
CORBA::Object_var v_reg_oref.in(),
_tc_SimpleFactory->id(),
);
...
•
|
tc.SimpleFactory->id()は、SimpleFactoryオブジェクトのインタフェース・リポジトリIDをタイプ・コードから抽出して指定します。
|
•
|
CORBA::NVList::_nil()は、ルーティング基準が使用されないことを指定します。その結果として、Simpleオブジェクトで作成されたオブジェクト参照は、そのオブジェクト参照を作成したSimpleFactoryオブジェクトと同じグループにルーティングされます。
|
CORBAサーバー・アプリケーションには、CORBAサーバー・アプリケーションを適切に停止するコードが必要です。
release()メソッドは、その目的のために用意されています。
release()メソッドの中では、次のようなCORBAサーバー・アプリケーションに固有のクリーンアップ・タスクを実行できます。
•
|
CORBAサーバー・アプリケーションで管理されるオブジェクト・ファクトリの登録削除
|
停止のリクエストを受信したCORBAサーバー・アプリケーションは、ほかのリモート・オブジェクトからのリクエストを受信することができなくなります。このことは、管理タスクであるCORBAサーバー・アプリケーションの停止の順序に影響します。たとえば、あるサーバー・プロセスがあるとして、2番目のサーバー・プロセスの
release()メソッドにその最初のサーバー・プロセスの呼出しが含まれている場合はそのサーバー・プロセスを停止しないでください。
サーバーを停止するときには、サーバー・アプリケーションの各ファクトリの登録を削除する必要があります。
unregister_factory()メソッドの呼出しは、
release()実装の最初のアクションとして行わなければなりません。
unregister_factory()メソッドでは、サーバー・アプリケーションのファクトリの登録が削除されます。この操作では、次の入力引数が必要です。
•
|
ファクトリ・オブジェクトのインタフェース・タイプ・コードに基づく文字列識別子(オブジェクトのOMG IDLインタフェースのインタフェース・リポジトリIDを識別するために使用します)
|
リスト3‑5は、サーバー・アプリケーションを解放し、CORBAサーバー・アプリケーションのファクトリを登録解除するC++コードを示しています。
リスト3-5
Oracle Tuxedo CORBAサーバー・アプリケーションの解放の例
...
public void release()
{
TP::unregister_factory(
factory_reference.in(),
SimpleFactoryHelper->id
);
}
...
ステップ4: CORBAクライアント・アプリケーションの記述
Oracle Tuxedoソフトウェアでは、次のタイプのCORBAクライアント・アプリケーションがサポートされています。
CORBAクライアント・アプリケーションを作成する手順は次のとおりです。
2.
|
BootstrapオブジェクトまたはCORBA INSブートストラップ処理メカニズムを使用して、Oracle Tuxedoドメインとの通信を確立します。
|
3.
|
FactoryFinder環境オブジェクトの初期リファレンスを解決します。
|
4.
|
ファクトリを使用して目的の CORBAオブジェクトのオブジェクト参照を取得します。
|
CORBAクライアントの開発手順は、
リスト3‑6で説明されています。それらのリストの内容は、Simpappサンプル・アプリケーションのコードです。Simpappサンプル・アプリケーションのCORBAクライアント・アプリケーションは、ファクトリを使用してSimpleオブジェクトのオブジェクト参照を取得し、Simpleオブジェクトの
to_upper()メソッドと
to_lower()メソッドを呼び出します。
リスト3-6
Simpappサンプル・アプリケーションのCORBAクライアント・アプリケーション
int main(int argc, char* argv[])
{
try {
// Initialize the ORB
CORBA::ORB_var var_orb = CORBA::ORB_init(argc, argv, "");
// Create the Bootstrap object
Tobj_Bootstrap bootstrap(var_orb.in(), "");
// Use the Bootstrap object to find the FactoryFinder
CORBA::Object_var var_factory_finder_oref =
bootstrap.resolve_initial_references("FactoryFinder");
// Narrow the FactoryFinder
Tobj::FactoryFinder_var var_factory_finder_reference =
Tobj::FactoryFinder::_narrow
(var_factory_finder_oref.in());
// Use the factory finder to find the Simple factory
CORBA::Object_var var_simple_factory_oref =
var_factory_finder_reference->find_one_factory_by_id(
_tc_SimpleFactory->id()
);
// Narrow the Simple factory
SimpleFactory_var var_simple_factory_reference =
SimpleFactory::_narrow(
var_simple_factory_oref.in());
// Find the Simple object
Simple_var var_simple =
var_simple_factory_reference->find_simple();
// Get a string from the user
cout << "String?";
char mixed[256];
cin >> mixed;
// Convert the string to upper case :
CORBA::String_var var_upper = CORBA::string_dup(mixed);
var_simple->to_upper(var_upper.inout());
cout << var_upper.in() << endl;
// Convert the string to lower case
CORBA::String_var var_lower = var_simple->to_lower(mixed);
cout << var_lower.in() << endl;
return 0;
}
}
Oracle Tuxedo CORBAアプリケーションでトランザクションを使用するとき、Oracle Tuxedo CORBAアプリケーションの代理でデータベースと相互通信を行うリソース・マネージャのCORBAサーバー・プロセスを作成する必要があります。使用するリソース・マネージャは、X/OPEN XA仕様に準拠していなければなりません。リソース・マネージャについての次の情報が必要です。
•
|
XAリソース・マネージャの名前を格納する xa_switch_t型の構造体の名前
|
•
|
XAリソース・マネージャの機能を示すフラグと実際のXA関数の関数ポインタ
|
•
|
XAインタフェースのサービスを提供するオブジェクト・ファイルの名前
|
•
|
XAリソース・マネージャの開閉に必要なコマンド。この情報は、 UBBCONFIG構成ファイルの OPENINFOパラメータと CLOSEINFOパラメータで指定されます。
|
新しいXAリソース・マネージャをOracle Tuxedoシステムに統合するときには、XAリソース・マネージャについての情報が格納されるようにファイル
$TUXDIR/udataobj/RMを更新する必要があります。その情報は、XAリソース・マネージャの適切なライブラリを使用するため、そしてトランザクション・マネージャとXAリソース・マネージャのインタフェースを自動的かつ適切に設定するために使用します。このファイルの形式は次のとおりです。
rm_name:rm_structure_name:library_names
rm_nameはXAリソース・マネージャの名前、
rm_structure_nameはXAリソース・マネージャの名前を定義する
xa_switch_t構造体の名前、
library_namesはXAリソース・マネージャのオブジェクト・ファイルのリストです。これらの値の前後には空白類(タブやスペース)を入れることができ、
library_namesの中に埋め込んでもかまいません。コロン(:)は、どの値にも挿入できません。「#」マークで始まる行は、コメントと判断されて無視されます。
buildtmsコマンドを使用すると、XAリソース・マネージャのサーバー・プロセスをビルドできます。
buildtmsコマンドの結果として生じるファイルは、
$TUXDIR/binディレクトリにインストールする必要があります。
buildtmsコマンドの詳細は、Oracle Tuxedoオンライン・ドキュメントの
『Oracle Tuxedoコマンド・リファレンス』を参照してください。
Oracle Tuxedoソフトウェアは優れた柔軟性と多くのオプションをアプリケーション設計者やプログラマに提供するので、同じCORBAアプリケーションが2つできることはありません。たとえば、アプリケーションは小さく、単純であることもあれば(マシン上で動作する単一のクライアントやサーバー)、数千単位のクライアント・アプリケーションとサーバー・アプリケーションをまたがるトランザクションを処理できるぐらいに複雑になる場合もあります。このため、管理の対象となるすべてのOracle Tuxedo CORBAアプリケーションについて、システム管理者はそのアプリケーションの構成要素(ドメイン、サーバー・アプリケーション、クライアント・アプリケーション、インタフェースなど)を定義および管理する構成ファイルを用意する必要があります。
構成ファイルを作成するときには、アプリケーションの実行可能バージョンを作成するためにOracle Tuxedoソフトウェアによって解釈されるパラメータのセットを使用してOracle Tuxedo CORBAアプリケーションを記述することになります。管理の設定段階において、システム管理者のする仕事は構成ファイルを作成することです。構成ファイルには、
表3-5のリストにあるセクションが格納されます。
表3‑5
Oracle Tuxedo CORBAアプリケーションの構成ファイルのセクション
|
|
|
Oracle Tuxedo CORBAアプリケーションのデフォルト(ユーザー・アクセス、メイン管理マシンなど)を定義します。
|
|
Oracle Tuxedo CORBAアプリケーションで実行されている各マシンに関するハードウェア固有の情報を定義します。
|
|
サーバー・アプリケーションまたはCORBAインタフェースの論理グループを定義します。
|
|
Oracle Tuxedo CORBAアプリケーションで使用されるサーバー・アプリケーション・プロセス(トランザクション・マネージャなど)を定義します。
|
|
Oracle Tuxedoアプリケーションによって提供されるサービスのパラメータを定義します。
|
|
Oracle Tuxedo CORBAアプリケーションのCORBAインタフェースに関する情報を定義します。
|
|
Oracle Tuxedo CORBAアプリケーションのルーティング基準を定義します。
|
リスト3‑7は、Simpappサンプル・アプリケーションの構成ファイルを示しています。
リスト3-7
Simpappサンプル・アプリケーションの構成ファイル
*RESOURCES
IPCKEY 55432
DOMAINID simpapp
MASTER SITE1
MODEL SHM
LDBAL N
*MACHINES
"PCWIZ"
LMID = SITE1
APPDIR = "C:\TUXDIR\MY_SIM~1"
TUXCONFIG = "C:\TUXDIR\MY_SIM~1\results\tuxconfig"
TUXDIR = "C:\TUXDIR"
MAXWSCLIENTS = 10
*GROUPS
SYS_GRP
LMID = SITE1
GRPNO = 1
APP_GRP
LMID = SITE1
GRPNO = 2
*SERVERS
DEFAULT:
RESTART = Y
MAXGEN = 5
TMSYSEVT
SRVGRP = SYS_GRP
SRVID = 1
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 2
CLOPT = "-A -- -N -M"
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 3
CLOPT = "-A -- -N"
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 4
CLOPT = "-A -- -F"
simple_server
SRVGRP = APP_GRP
SRVID = 1
RESTART = N
ISL
SRVGRP = SYS_GRP
SRVID = 5
CLOPT = "-A -- -n //PCWIZ:2468"
•
|
ASCII形式の構成ファイル。任意のエディタで作成および修正します。Oracle Tuxedoのドキュメント全体を通して、ASCII形式の構成ファイルは UBBCONFIGファイルと呼びます。構成ファイルの名前は、任意の名前を使用できます。
|
•
|
TUXCONFIGファイルは、バイナリ形式の UBBCONFIGファイルで、 tmloadcfコマンドを使用して作成します。 tmloadcfコマンドを実行する際は、 TUXCONFIG環境変数を TUXCONFIGファイルの名前とディレクトリの場所に設定する必要があります。 tmloadcfコマンドでは、構成ファイルがバイナリ形式に変換されて、コマンドで指定された位置に書き込まれます。
|
tmloadcfコマンドの詳細は、Oracle Tuxedoオンライン・ドキュメントの
『Oracle Tuxedoコマンド・リファレンス』を参照してください。
ステップ8: CORBAサーバー・アプリケーションのコンパイル
C++サーバー・アプリケーションのコンパイルとリンクには、
buildobjserverコマンドを使用します。
buildobjserverコマンドの形式は次のとおりです。
buildobjserver [-o
servername] [
options]
buildobjserverコマンドの構文要素を次に説明します。
•
|
-o servernameは、このコマンドで生成されるサーバー・アプリケーションの名前を表します。
|
•
|
optionsは、 buildobjserverコマンドのコマンド行オプションを表します。
|
マルチスレッドをサポートするサーバー・アプリケーションを作成する場合は、アプリケーションをビルドするときに
buildobjserverコマンドで
-tオプションを指定する必要があります。マルチスレッドをサポートするサーバー・アプリケーションの作成については、
『CORBAサーバー・アプリケーションの作成』を参照してください。
ステップ9: CORBAクライアント・アプリケーションのコンパイル
CORBAクライアント・アプリケーションの開発の最終ステップは、実行可能なクライアント・アプリケーションを生成することです。そのためには、コードをコンパイルしてクライアント・スタブに対してリンクする必要があります。
CORBA C++クライアント・アプリケーションを作成する場合、
buildobjclientコマンドを使用してOracle Tuxedo CORBAクライアント・アプリケーションの実行可能ファイルを生成します。このコマンドでは、静的起動を使用するインタフェースのCORBAクライアント・スタブ、関連付けられるヘッダー・ファイル、および標準のOracle Tuxedoライブラリを組み合せてCORBAクライアントの実行可能ファイルが生成されます。
buildobjclientコマンドの構文については、Oracle Tuxedoオンライン・ドキュメントの
『Oracle Tuxedoコマンド・リファレンス』を参照してください。
ステップ10: Oracle Tuxedo CORBAアプリケーションの起動
tmbootコマンドを使用すると、Oracle Tuxedo CORBAアプリケーションでサーバー・プロセスを起動できます。通常、CORBAアプリケーションは、
UBBCONFIGファイルの
RESOURCESセクションで
MASTERとして指定されたマシンから起動します。
tmbootコマンドが実行可能ファイルを見つけられるようにするために、Oracle Tuxedoシステムのプロセスは
$TUXDIR/binディレクトリに配置する必要があります。サーバー・アプリケーションは、構成ファイルで指定されているとおりに
APPDIRに配置されていなければなりません。
サーバー・アプリケーションの起動時には、
tmbootコマンドは構成ファイルから
CLOPT、
SEQUENCE、
SRVGRP、
SRVID、および
MINパラメータを使用します。サーバー・アプリケーションは、構成ファイルでの順序で起動されます。
tmbootコマンドの使い方については、Oracle Tuxedoオンライン・ドキュメントの
『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』を参照してください。
その他のOracle Tuxedo CORBAサンプル・アプリケーション
サンプル・アプリケーションは、Oracle Tuxedo CORBAアプリケーションの開発時のタスクを例示し、CORBAクライアントおよびサーバーのプログラマが自分でOracle Tuxedo CORBAアプリケーションを作成する際に使用できるサンプル・コードが含まれています。サンプル・アプリケーションのコードは、Oracle Tuxedo製品の情報トピック全体に渡り、開発および管理ステップを説明するために使用されています。
表3-6は、その他のOracle Tuxedo CORBAサンプル・アプリケーションを説明しています。
表3-6
Oracle Tuxedo CORBAサンプル・アプリケーション
Oracle Tuxedo CORBA サンプル・アプリケーション
|
|
|
CORBA C++クライアント・アプリケーションおよびC++サーバー・アプリケーションを提供します。C++サーバー・アプリケーションには、C++クライアント・アプリケーションから受信した文字列を処理する2つの操作があります。
|
|
Oracle Tuxedo CORBAのクライアント・アプリケーションとサーバー・アプリケーションを開発し、Oracle Tuxedoアプリケーションを構成する方法を説明します。C++サーバー・アプリケーションとCORBA C++アプリケーション、CORBAクライアント・アプリケーションのビルドを例示します。
|
|
Oracle Tuxedo認証をOracle Tuxedo CORBAアプリケーションに追加する手順を例示します。Securityサンプル・アプリケーションのビルドと実行については、Oracle Tuxedoオンライン・ドキュメントの 『CORBAアプリケーションにおけるセキュリティの使用』を参照してください。
|
|
Basicサンプル・アプリケーションのCORBA C++サーバー・アプリケーションとCORBAクライアント・アプリケーションにトランザクションに関与するオブジェクトを追加します。Transactionsサンプル・アプリケーションは、実装構成ファイル(ICF)を使用して、CORBAオブジェクトのトランザクション・ポリシーを定義する方法を示します。Transactionsサンプル・アプリケーションのビルドと実行については、Oracle Tuxedoオンライン・ドキュメントの 『CORBAトランザクションの使用』を参照してください。
|
|
既存のOracle Tuxedo ATMIアプリケーションをCORBAオブジェクトとしてラッピングする方法を例示します。
|
|
サーバー・アプリケーションのレプリケート、ステートレス・オブジェクトの作成、およびファクトリ・ベースのルーティングの実装を例示します。
|
|
証明書認証をサポートするためのSimpappサンプル・アプリケーションに対する必要な開発および管理の変更を実装します。Secure Simpappサンプル・アプリケーションのビルドと実行については、Oracle Tuxedoオンライン・ドキュメントの 『CORBAアプリケーションにおけるセキュリティの使用』を参照してください。
|
|
連結されたCORBAクライアント/サーバー・アプリケーションおよびコールバック・オブジェクトを使用してイベントをOracle Tuxedo CORBAアプリケーションに実装する方法を例示します。C++バージョンはOracle Simple Events APIを使用します。Introductory Eventsサンプル・アプリケーションのビルドと実行については、Oracle Tuxedoオンライン・ドキュメントの 『CORBA通知サービスの使用』を参照してください。
|
|
一時的および永続的なサブスクリプションとデータ・フィルタリングを使用した、Oracle Tuxedo CORBAアプリケーションのより複雑なイベントの実装を例示します。C++バージョンはAdvanced CosNotification APIを使用します。Advanced Eventsサンプル・アプリケーションのビルドと実行については、Oracle Tuxedoオンライン・ドキュメントの 『CORBA通知サービスの使用』を参照してください。
|