bea ホーム | 製品 | dev2dev | support | askBEA
BEA Logo Tuxedo
 ドキュメントのダウンロード   サイトマップ   用語集 
検索
0

Tuxedo CORBA アプリケーション入門

 Previous Next Contents Index View as PDF  

BEA Tuxedo CORBA アプリケーションの開発

ここでは、以下の内容について説明します。

BEA Tuxedo CORBA のクライアント・アプリケーションとサーバ・アプリケーションの作成については、次の BEA Tuxedo オンライン・マニュアルを参照してください。

 


BEA Tuxedo CORBA アプリケーションの開発プロセスの概要

表 3-1 は、BEA Tuxedo CORBA アプリケーションの開発プロセスの概略です。

表 3-1 BEA Tuxedo CORBA アプリケーションの開発プロセス

手順

説明

1

BEA Tuxedo アプリケーションで使用する各 CORBA インターフェイスについて、Object Management Group (OMG) インターフェイス定義言語 (IDL) コードを記述します。

2

CORBA クライアント・スタブおよびスケルトンを生成します。

3

CORBA サーバ・アプリケーションを記述します。

4

CORBA クライアント・アプリケーションを記述します。

5

XA リソース・マネージャを作成します。

6

コンフィギュレーション・ファイルを作成します。

7

TUXCONFIG ファイルを作成します。

8

CORBA サーバ・アプリケーションをコンパイルします。

9

CORBA クライアント・アプリケーションをコンパイルします。

10

BEA Tuxedo CORBA アプリケーションを起動します。


 

開発プロセスの各手順は、以降の節で詳しく説明します。

図3-1 は、BEA Tuxedo CORBA アプリケーションを開発するプロセスを示しています。

図 3-1 BEA Tuxedo CORBA アプリケーションの開発プロセス


 


 

 


Simpapp サンプル・アプリケーション

このトピックでは、Simpapp サンプル・アプリケーションを使用して開発プロセスを説明していきます。

Simpapp サンプル・アプリケーションの CORBA サーバ・アプリケーションでは、次の 2 つのメソッドを備えた CORBA オブジェクトのインプリメンテーションが提供されます。

図3-2 は、Simpapp サンプル・アプリケーションのしくみを示しています。

図 3-2 Simpapp サンプル・アプリケーション


 


 


 


 


 


 

Simpapp サンプル・アプリケーションのソース・ファイルは、BEA Tuxedo ソフトウェアの $TUXDIR¥samples¥corba¥simpapp ディレクトリにあります。Simpapp サンプル・アプリケーションをビルドおよび実行する手順は、同じディレクトリの Readme.txt ファイルに記載されています。

注記 Simpapp サンプル・アプリケーションは、CORBA C++ のクライアント・アプリケーションとサーバ・アプリケーションおよび CORBA Java のクライアント・アプリケーションのビルドを例示します。単純な ActiveX クライアント・アプリケーションのビルドについては、BEA Tuxedo オンライン・マニュアルの「Basic サンプル・アプリケーション」を参照してください。

BEA Tuxedo では、BEA Tuxedo CORBA アプリケーションの開発を例示および支援するサンプル・アプリケーションがいくつか用意されています。サンプル・アプリケーションの概要については、BEA Tuxedo オンライン・マニュアルのサンプルを参照してください。

 


ステップ 1: OMG IDL コードの記述

BEA Tuxedo CORBA アプリケーションの記述では、まず最初に、Object Management Group (OMG) インターフェイス定義言語 (IDL) を使用してすべての CORBA インターフェイスとそれらのメソッドを指定します。OMG IDL で記述したインターフェイス定義を使用すると、完全に CORBA インターフェイスを定義し、各オペレーションの引数を指定できます。OMG IDL は、純粋な宣言型言語です。つまり、インプリメンテーションの詳細は含まれていません。OMG IDL で指定されるオペレーションは、CORBA バインディングを提供する任意の言語で記述し、呼び出すことができます。

Simpapp サンプル・アプリケーションは、表 3-2 のリストにある CORBA インターフェイスをインプリメントします。

表 3-2 Simpapp サンプル・アプリケーションの CORBA インターフェイス

インターフェイス

説明

オペレーション

SimpleFactory

Simple オブジェクトのオブジェクト・リファレンスを作成します。

find_simple()

Simple

文字列の大文字と小文字を変換します。

to_upper()

to_lower()


 

リスト3-1 は、Simpapp サンプル・アプリケーションの CORBA インターフェイスを定義する simple.idl ファイルを示しています。

コード リスト 3-1 Simpapp サンプル・アプリケーションの OMG IDL コード

#pragma prefix "beasys.com"
interface Simple
{
//文字列を小文字に変換 (新しい文字列を返す)
string to_lower(in string val);
     //文字列を大文字に変換 (置換)
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 ファイルをコンパイルし、BEA Tuxedo CORBA クライアント・アプリケーションおよびサーバ・アプリケーションの CORBA クライアント・スタブおよびスケルトンを生成します。

表 3-3 に、idl コマンドによって作成されるファイルの一覧を示します。

表 3-3 idl コマンドで作成されるファイル

ファイル

デフォルト名

説明

CORBA クライアント・スタブ・ファイル

application_c.cpp

要求を送信するために生成されたコードを格納します。

CORBA クライアント・スタブ・ヘッダ・ファイル

application_c.h

OMG IDL ファイルで指定された各インターフェイスと型のクラス定義を格納します。

スケルトン・ファイル

application_s.cpp

OMG IDL ファイルで指定した各インターフェイス用のスケルトンが含まれます。実行時に、スケルトンでは CORBA クライアントの要求を CORBA サーバ・アプリケーションの適切なオペレーションにマッピングします。

スケルトン・ヘッダ・ファイル

application_s.h

スケルトンのクラス定義を格納します。

インプリメンテーション・ファイル

application_i.cpp

OMG IDL ファイルで指定されたインターフェイスのオペレーションをインプリメントするメソッドのシグニチャを格納します。

インプリメンテーション・ヘッダ・ファイル

application_i.h

OMG IDL ファイルで指定された各インターフェイスの初期クラス定義を格納します。


 

表 3-4 に、idltojava コマンドによって作成されるファイルの一覧を示します。

表 3-4 idltojava コマンドで作成されるファイル

ファイル

デフォルト名

説明

基本インターフェイス・クラス・ファイル

interface.java

Java で記述されたインターフェイスのインプリメンテーションを格納します。

このファイルをコピーして新しいファイルを作成し、ビジネス・ロジックをその新しいファイルに追加します。サンプルおよびこの文書の中では、このファイルの名前は規約に従って interfaceImpl.java とします。ファイル名は、インターフェイスの実際の名前に置き換えてください。この新しいファイルは、オブジェクト・インプリメンテーション・ファイルと言います。

CORBA クライアント・スタブ・ファイル

_interfaceStub.java

要求を送信するために生成されたコードを格納します。

Holder クラス・ファイル

interfaceHolder.java

Holder クラスのインプリメンテーションを格納します。Holder クラスでは、CORBA にあるが、Java に正確にはマッピングされない、out 引数と inout 引数のオペレーションが提供されます。

Helper クラス・ファイル

interfaceHelper.java

Helper クラスのインプリメンテーションを格納します。Helper クラスでは、補助機能 (特に narrow メソッド) が提供されます。


 

 


ステップ 3: CORBA サーバ・アプリケーションの記述

BEA Tuxedo ソフトウェアでは、CORBA C++ サーバ・アプリケーションがサポートされています。CORBA サーバ・アプリケーションを作成する手順は次のとおりです。

  1. 各インターフェイスのオペレーションをインプリメントするメソッドを記述します。

  2. CORBA Server オブジェクトを作成します。

  3. オブジェクトの活性化方針を定義します。

  4. ファクトリを作成して登録します。

  5. CORBA サーバ・アプリケーションを解放します。


     

各インターフェイスのオペレーションをインプリメントするメソッドの記述

OMG IDL ファイルをコンパイルした後は、ファイルの各インターフェイスのオペレーションをインプリメントするメソッドを記述する必要があります。インプリメンテーション・ファイルには、以下のものが含まれます。

インプリメンテーション・ファイルは手作業で記述できます。idl コマンドには、インプリメンテーション・ファイルのテンプレートを生成するオプションがあります。

リスト3-2 は、Simpapp サンプル・アプリケーションの Simple インターフェイスと SimpleFactory インターフェイスの C++ インプリメンテーションを示しています。

コード リスト 3-2 Simple インターフェイスと SimpleFactory インターフェイスの C++ インプリメンテーション

// 文字列を小文字に変換する Simple_i::to_lower メソッド
// のインプリメンテーション

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();
}
// 文字列を大文字に変換する Simple_i::to_upper メソッド
// のインプリメンテーション

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();
}
// Simple オブジェクトのオブジェクト・リファレンスを作成する
// SimpleFactory_i::find_simple メソッドのインプリメンテーション

Simple_ptr SimpleFactory_i::find_simple()
{
CORBA::Object_var var_simple_oref =
TP::create_object_reference(
_tc_Simple->id(),
"simple",
CORBA::NVList::_nil()
);
}

CORBA Server オブジェクトの作成

Server オブジェクトでは、次のタスクが実行されます。

CORBA サーバ・アプリケーションでは、Server オブジェクトは既にインスタンス化されており、Server オブジェクトのヘッダ・ファイルを利用することができます。サーバ・アプリケーションを初期化および解放するメソッド、およびサーバント・オブジェクトを作成するメソッド (必要な場合) は、独自にインプリメントしてください。

リスト3-3 は、Simpapp サンプル・アプリケーションの Server オブジェクトの C++ コードを示しています。

コード リスト 3-3 CORBA C++ Server オブジェクト

static CORBA::Object_var static_var_factory_reference;
// サーバを起動するメソッド

CORBA::Boolean Server::initialize(int argc, char* argv[])
{
// ファクトリのオブジェクト・リファレンスを作成

static_var_factory_reference =
TP::create_object_reference(
_tc_SimpleFactory->id(),
"simple_factory",
CORBA::NVList::_nil()
);
// ファクトリ・リファレンスを FactoryFinder に登録

TP::register_factory(
static_var_factory_reference.in(),
_tc_SimpleFactory->id()
);
return CORBA_TRUE;
}
// サーバをシャットダウンするメソッド

void Server::release()
{
// ファクトリの登録を削除

try {
TP::unregister_factory(
static_var_factory_reference.in(),
_tc_SimpleFactory->id()
);
}
catch (...) {
TP::userlog("Couldn't unregister the SimpleFactory");
}
}
// サーバントを作成するメソッド

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 ファイルで定義します。BEA Tuxedo CORBA アプリケーションでのトランザクションの使用については、BEA Tuxedo オンライン・マニュアルの『BEA Tuxedo CORBA トランザクション』を参照してください。

BEA Tuxedo ソフトウェアでは、表 3-5 のリストにある活性化方針がサポートされています。

表 3-5 活性化方針

活性化方針

説明

method

オブジェクトのオペレーションの呼び出しの間だけオブジェクトを活性化します。これはデフォルトの活性化方針です。

transaction

オペレーションが呼び出されたときにオブジェクトを活性化します。オブジェクトがトランザクション範囲内で活性化された場合、そのオブジェクトはトランザクションがコミットまたはロールバックされるまでは、活性化されたままです。

process

オペレーションが呼び出されたときにオブジェクトを活性化し、次のいずれかが起こったときのみオブジェクトを非活性化します。


 

Simpapp サンプル・アプリケーションの Simple インターフェイスには、メソッドのデフォルトの活性化方針が割り当てられます。オブジェクトの状態の管理および活性化方針の定義の詳細については、BEA Tuxedo オンライン・マニュアルの『BEA Tuxedo CORBA サーバ・アプリケーションの開発方法』 を参照してください。

ファクトリの作成と登録

CORBA クライアント・アプリケーションから容易に見つかるように、CORBA サーバ・アプリケーションでファクトリを管理するには、そのファクトリを FactoryFinder オブジェクトに登録するコードを記述する必要があります。

CORBA サーバ・アプリケーションで管理されるファクトリを登録するコードを記述するには、次の手順に従います。

  1. ファクトリのオブジェクト・リファレンスを作成します。

    create_object_reference() メソッドの呼び出しをコードに含めます。その際には、ファクトリの OMG IDL インターフェイスのインターフェイス・リポジトリ ID またはオブジェクト ID (OID) を文字列形式で指定します。ルーティング基準を指定することも可能です。

  2. ファクトリを BEA Tuxedo ドメインに登録します。

    register_factory() メソッドを使用すると、BEA Tuxedo ドメインの FactoryFinder オブジェクトにファクトリを登録できます。register_factory() メソッドでは、ファクトリのオブジェクト・リファレンスと文字列識別子を指定する必要があります。

リスト3-4 は、ファクトリを作成および登録する、Simpapp サンプル・アプリケーションのコードを示しています。

コード リスト 3-4 ファクトリの作成と登録の例

...
CORBA::Object_var v_reg_oref =
TP:create_object_reference(
_tc.SimpleFactory->id(), //ファクトリのインターフェイス ID
"simplefactory", //オブジェクト ID
CORBA::NVList::_nil() ルーティング基準
);
	TP::register_factory(
CORBA::Object_var v_reg_oref.in(),
_tc_SimpleFactory->id(),
);
...

リスト3-4 については、次の点に注意してください。

CORBA サーバ・アプリケーションの解放

CORBA サーバ・アプリケーションには、CORBA サーバ・アプリケーションを適切にシャットダウンするコードが必要です。release() メソッドは、その目的のために用意されています。release() メソッドの中では、次のような CORBA サーバ・アプリケーションに固有のクリーンアップ・タスクを実行できます。

シャットダウンの要求を受信した CORBA サーバ・アプリケーションは、ほかのリモート・オブジェクトからの要求を受信することができなくなります。このことは、管理タスクである CORBA サーバ・アプリケーションのシャットダウンの順序に影響します。たとえば、あるサーバ・プロセスがあるとして、2 番目のサーバ・プロセスの release() メソッドにその最初のサーバ・プロセスの呼び出しが含まれている場合はそのサーバ・プロセスをシャットダウンしないでください。

サーバをシャットダウンするときには、サーバ・アプリケーションの各ファクトリの登録を削除する必要があります。unregister_factory() メソッドの呼び出しは、release() インプリメンテーションの最初のアクションとして行わなければなりません。unregister_factory() メソッドでは、サーバ・アプリケーションのファクトリの登録が削除されます。このオペレーションでは、次の入力引数が必要です。

リスト3-5 は、サーバ・アプリケーションを解放し、CORBA サーバ・アプリケーションのファクトリを登録解除する C++ コードを示しています。

コード リスト 3-5 BEA Tuxedo CORBA サーバ・アプリケーションの解放の例

...
public void release()
{
TP::unregister_factory(
factory_reference.in(),
SimpleFactoryHelper->id
);
}
...

 


ステップ 4: CORBA クライアント・アプリケーションの記述

BEA Tuxedo ソフトウェアでは、次のタイプのCORBA クライアント・アプリケーションがサポートされています。

CORBA クライアント・アプリケーションを作成する手順は次のとおりです。

  1. ORB を初期化します。

  2. Bootstrap オブジェクトまたは CORBA INS ブートストラップ処理メカニズムを使用して、BEA Tuxedo ドメインとの通信を確立します。

  3. FactoryFinder 環境オブジェクトの初期リファレンスを解決します。

  4. ファクトリを使用して目的の CORBA オブジェクトのオブジェクト・リファレンスを取得します。

  5. CORBA オブジェクトのメソッドを呼び出します。

注記 ActiveX クライアント・アプリケーションの作成については、BEA Tuxedo オンライン・マニュアルの 『BEA Tuxedo CORBA ActiveX』を参照してください。

CORBA クライアントの開発手順は、リスト3-6リスト3-7 で説明されています。それらのリストの内容は、Simpapp サンプル・アプリケーションのコードです。Simpapp サンプル・アプリケーションの CORBA クライアント・アプリケーションは、ファクトリを使用して Simple オブジェクトのオブジェクト・リファレンスを取得し、Simple オブジェクトの to_upper() メソッドと to_lower() メソッドを呼び出します。

コード リスト 3-6 Simpapp サンプル・アプリケーションの CORBA クライアント・アプリケーション

int main(int argc, char* argv[])
{
try {
//ORB を初期化
CORBA::ORB_var var_orb = CORBA::ORB_init(argc, argv, "");

// Bootstrap オブジェクトを作成
Tobj_Bootstrap bootstrap(var_orb.in(), "");

// Bootstrap オブジェクトを使用して FactoryFinder を検索
CORBA::Object_var var_factory_finder_oref =
bootstrap.resolve_initial_references("FactoryFinder");

// FactoryFinder をナロー変換
Tobj::FactoryFinder_var var_factory_finder_reference =
Tobj::FactoryFinder::_narrow
(var_factory_finder_oref.in());

// ファクトリ・ファインダを使用して Simple ファクトリを検索
CORBA::Object_var var_simple_factory_oref =
var_factory_finder_reference->find_one_factory_by_id(
_tc_SimpleFactory->id()
);

// Simple ファクトリをナロー変換
SimpleFactory_var var_simple_factory_reference =
SimpleFactory::_narrow(
var_simple_factory_oref.in());

//Simple オブジェクトを検索
Simple_var var_simple =
var_simple_factory_reference->find_simple();

// ユーザから文字列を取得
cout << "String?";
char mixed[256];
cin >> mixed;

// 文字列を大文字に変換
CORBA::String_var var_upper = CORBA::string_dup(mixed);
var_simple->to_upper(var_upper.inout());
cout << var_upper.in() << endl;

// 文字列を小文字に変換
CORBA::String_var var_lower = var_simple->to_lower(mixed);
cout << var_lower.in() << endl;

return 0;
}
}

コード リスト 3-7 Simpapp サンプル・アプリケーションの Java クライアント・アプリケーション

public class SimpleClient
{
public static void main(String args[])

//ORB を初期化
ORB orb = ORB.init(args, null);

// Bootstrap オブジェクトを作成
Tobj_Bootstrap bootstrap = new Tobj_Bootstrap(orb, "");

// Bootstrap オブジェクトを使用して FactoryFinder を検索
org.omg.CORBA.Object factory_finder_oref =
bootstrap.resolve_initial_references("FactoryFinder");

// FactoryFinder をナロー変換
FactoryFinder factory_finder_reference =
FactoryFinderHelper.narrow(factory_finder_oref);

// FactoryFinder を使用して Simple ファクトリを検索
org.omg.CORBA.Object simple_factory_oref =
factory_finder_reference.find_one_factory_by_id
(SimpleFactoryHelper.id());

// Simple ファクトリをナロー変換
SimpleFactory simple_factory_reference =
SimpleFactoryHelper.narrow(simple_factory_oref);

// Simple オブジェクトを検索
Simple simple = simple_factory_reference.find_simple();

// ユーザから文字列を取得
System.out.println("String?");
String mixed = in.readLine();

// 文字列を大文字に変換
org.omg.CORBA.StringHolder buf = new
org.omg.CORBA.StringHolder(mixed);
simple.to_upper(buf);
System.out.println(buf.value);

// 文字列を小文字に変換
String lower = simple.to_lower(mixed);
System.out.println(lower);
}
}

 


ステップ 5: XA リソース・マネージャの作成

BEA Tuxedo CORBA アプリケーションでトランザクションを使用する場合は、BEA Tuxedo CORBA アプリケーションの代わりにデータベースとやり取りするリソース・マネージャの CORBA サーバ・プロセスを作成する必要があります。使用するリソース・マネージャは、X/OPEN XA 仕様に準拠していなければなりません。リソース・マネージャについての次の情報が必要です。

新しい XA リソース・マネージャを BEA 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 コマンドの詳細については、BEA Tuxedo オンライン・マニュアルの『BEA Tuxedo コマンド・リファレンス』 を参照してください。

 


ステップ 6: コンフィギュレーション・ファイルの作成

BEA Tuxedo ソフトウェアは優れた柔軟性と多くのオプションをアプリケーション設計者やプログラマに提供するので、同じ CORBA アプリケーションが 2 つできることはありません。たとえば、アプリケーションは小さく、単純であることもあれば (マシン上で動作する単一のクライアントやサーバ)、数千単位のクライアント・アプリケーションとサーバ・アプリケーションをまたがるトランザクションを処理できるぐらいに複雑になる場合もあります。このため、管理の対象となるすべての BEA Tuxedo CORBA アプリケーションについて、システム管理者はそのアプリケーションの構成要素 (ドメイン、サーバ・アプリケーション、クライアント・アプリケーション、インターフェイスなど) を定義および管理するコンフィギュレーション・ファイルを用意する必要があります。

コンフィギュレーション・ファイルを作成するときには、アプリケーションの実行可能バージョンを作成するために BEA Tuxedo ソフトウェアによって解釈されるパラメータのセットを使用して BEA Tuxedo CORBA アプリケーションを記述することになります。管理の設定段階において、システム管理者のする仕事はコンフィギュレーション・ファイルを作成することです。コンフィギュレーション・ファイルには、表 3-6 のリストにあるセクションが格納されます。

表 3-6 BEA Tuxedo CORBA アプリケーションのコンフィギュレーション・ファイルのセクション

コンフィギュレーション・ファイルのセクション

説明

RESOURCES

BEA Tuxedo CORBA アプリケーションのデフォルト (ユーザ・アクセスやメインの管理マシンなど) を定義します。

MACHINES

BEA Tuxedo CORBA アプリケーションで動作する各マシンのハードウェア固有の情報を定義します。

GROUPS

サーバ・アプリケーションまたは CORBA インターフェイスの論理的なグループを定義します。

SERVERS

BEA Tuxedo CORBA アプリケーションで使用されるサーバ・アプリケーション・プロセス (トランザクション・マネージャなど) を定義します。

SERVICES

BEA Tuxedo アプリケーションで提供されるサービスのパラメータを定義します。

INTERFACES

BEA Tuxedo CORBA アプリケーションの CORBA インターフェイスについての情報を定義します。

ROUTING

BEA Tuxedo CORBA アプリケーションのルーティング基準を定義します。


 

リスト3-8 は、Simpapp サンプル・アプリケーションのコンフィギュレーション・ファイルを示しています。

コード リスト 3-8 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"
*SERVICES                              

 


ステップ 7: TUXCONFIG ファイルの作成

コンフィギュレーション・ファイルには次の 2 種類があります。

tmloadcf コマンドの詳細については、BEA Tuxedo オンライン・マニュアルの『BEA Tuxedo コマンド・リファレンス』を参照してください。

 


ステップ 8: CORBA サーバ・アプリケーションのコンパイル

C++ サーバ・アプリケーションのコンパイルとリンクには、buildobjserver コマンドを使用します。buildobjserver コマンドの形式は次のとおりです。

buildobjserver [-o servername] [options]

buildobjserver コマンドの構文要素を次に説明します。

マルチスレッドをサポートするサーバ・アプリケーションを作成する場合は、アプリケーションをビルドするときに buildobjserver コマンドで -t オプションを指定する必要があります。マルチスレッドをサポートするサーバ・アプリケーションの作成については、『BEA Tuxedo CORBA サーバ・アプリケーションの開発方法』を参照してください。

 


ステップ 9: CORBA クライアント・アプリケーションのコンパイル

CORBA クライアント・アプリケーションの開発の最終ステップは、実行可能なクライアント・アプリケーションを生成することです。そのためには、コードをコンパイルしてクライアント・スタブに対してリンクする必要があります。

CORBA C++ クライアント・アプリケーションを作成する場合、buildobjclient コマンドを使用して BEA Tuxedo CORBA クライアント・アプリケーションの実行可能ファイルを生成します。このコマンドでは、静的起動を使用するインターフェイスの CORBA クライアント・スタブ、関連付けられるヘッダ・ファイル、および標準の BEA Tuxedo ライブラリを組み合わせて CORBA クライアントの実行可能ファイルが生成されます。buildobjclient コマンドの構文については、BEA Tuxedo オンライン・マニュアルの 『BEA Tuxedo コマンド・リファレンス』 を参照してください。

CORBA Java クライアント・アプリケーションを作成する場合、javac コマンドを使用して CORBA クライアント・アプリケーションの実行可能プログラムを生成します。Java クライアント・アプリケーションをコンパイルするときには、CLASSPATHtuxdir¥udataobj¥java¥jdk¥m3envobj.jar ファイルを設定する必要があります。m3envobj.jar ファイルには、BEA Tuxedo 環境オブジェクトの Java クラスが格納されます。

 


ステップ 10: BEA Tuxedo CORBA アプリケーションの起動

tmboot コマンドを使用すると、BEA Tuxedo CORBA アプリケーションでサーバ・プロセスを起動できます。通常、CORBA アプリケーションは、UBBCONFIG ファイルの RESOURCES セクションで MASTER として指定されたマシンから起動します。

tmboot コマンドが実行可能ファイルを見つけられるようにするために、BEA Tuxedo システムのプロセスは $TUXDIR¥bin ディレクトリに配置する必要があります。サーバ・アプリケーションは、コンフィギュレーション・ファイルで指定されているとおりに APPDIR に配置されていなければなりません。

サーバ・アプリケーションの起動時には、tmboot コマンドはコンフィギュレーション・ファイルから CLOPTSEQUENCESRVGRPSRVID、および MIN パラメータを使用します。サーバ・アプリケーションは、コンフィギュレーション・ファイルでの順序で起動されます。

tmboot コマンドの使い方については、BEA Tuxedo オンライン・マニュアルの 『BEA Tuxedo のファイル形式とデータ記述方法』 を参照してください。

 


その他の BEA Tuxedo CORBA サンプル・アプリケーション

サンプル・アプリケーションは、BEA Tuxedo CORBA アプリケーションの開発に伴うタスクを例示し、BEA Tuxedo CORBA アプリケーションのビルドでプログラマが利用できるサンプル・コードを提供します。サンプル・アプリケーションのコードは、BEA Tuxedo 製品のすべての情報トピックで開発や管理の手順を説明するために使用します。

表 3-7 は、その他の BEA Tuxedo CORBA サンプル・アプリケーションを説明しています。

表 3-7 BEA Tuxedo CORBA サンプル・アプリケーション

BEA TuxedoCORBA
サンプル・アプリケーション

説明

Simpapp

CORBA C++ クライアント・アプリケーション、CORBA Java クライアント・アプリケーション、および C++ サーバ・アプリケーションを提供します。C++ サーバ・アプリケーションには、C++ クライアント・アプリケーションから受信した文字列を処理する 2 つのオペレーションがあります。

Basic

BEA Tuxedo CORBA のクライアント・アプリケーションとサーバ・アプリケーションを開発し、BEA Tuxedo アプリケーションをコンフィギュレーションする方法を説明します。C++ サーバ・アプリケーションと CORBA C++、CORBA Java、および ActiveX のクライアント・アプリケーションのビルドを例示します。

Security

BEA Tuxedo CORBA アプリケーションへの BEA Tuxedo 認証の追加を例示します。Security サンプル・アプリケーションのビルドと実行については、BEA Tuxedo オンライン・マニュアルの『BEA Tuxedo CORBA アプリケーションのセキュリティ機能』を参照してください。

Transactions

Basic サンプル・アプリケーションの CORBA C++ サーバ・アプリケーションと CORBA クライアント・アプリケーションにトランザクションに関与するオブジェクトを追加します。Transactions サンプル・アプリケーションでは、インプリメンテーション・コンフィギュレーション・ファイル (ICF) を使用して、CORBA オブジェクトのトランザクション方針を定義する方法を示します。Transactions サンプル・アプリケーションのビルドと実行については、BEA Tuxedo オンライン・マニュアルの『BEA Tuxedo CORBA トランザクション』を参照してください。

Wrapper

既存の BEA Tuxedo ATMI アプリケーションを CORBA オブジェクトとしてラッピングする方法を例示します。

Production

サーバ・アプリケーションの複製、状態を持たないオブジェクトの作成、およびファクトリ・ベースのルーティングのインプリメントを例示します。

Secure Simpapp

証明書認証をサポートするための Simpapp サンプル・アプリケーションに対する必要な開発および管理の変更をインプリメントします。Secure Simpapp サンプル・アプリケーションのビルドと実行については、BEA Tuxedo オンライン・マニュアルの『BEA Tuxedo CORBA アプリケーションのセキュリティ機能』を参照してください。

Introductory Events

CORBA 共同クライアント/サーバ・アプリケーションとコールバック・オブジェクトを使用して BEA Tuxedo CORBA アプリケーションでイベントをインプリメントする方法を例示します。C++ バージョンでは BEA Simple Events API を使用し、Java バージョンでは CosNotification API を使用します。Introductory Events サンプル・アプリケーションのビルドと実行については、BEA Tuxedo オンライン・マニュアルの『BEA Tuxedo CORBA ノーティフィケーション・サービス』を参照してください。

Advanced Events

一時的なサブスクリプションと永続的なサブスクリプションおよびデータのフィルタ処理を利用したイベントのより複雑なインプリメンテーションを BEA Tuxedo CORBA アプリケーションで提供します。C++ バージョンでは Advanced CosNotification API を使用し、Java バージョンでは Advanced Simple Java API を使用します。Advanced Events サンプル・アプリケーションのビルドと実行については、BEA Tuxedo オンライン・マニュアルの『BEA Tuxedo CORBA ノーティフィケーション・サービス』を参照してください。


 

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy