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

Tuxedo CORBA プログラミング・リファレンス

 Previous Next Contents View as PDF  

TP::userlog()

概要

ユーザ・ログ (ULOG) ファイルにメッセージを書き込みます。

C++ バインディング

static int    TP::userlog(char*, ...);

引数

printf(3S) スタイルの形式を指定します。printf(3S) 引数については、C または C++ リファレンス・マニュアルで説明されています。

例外

特にありません。

説明

userlog() メソッドは、ユーザ・ログ (ULOG) ファイルにメッセージを書き込みます。メッセージは、時刻 (hhmmss)、システム名、プロセス名、および呼び出しプロセスのプロセス ID で構成されるタグを付けて、ULOG ファイルに追加されます。タグの最後にはコロンが付けられます。

サーバ・アプリケーションでは、 userlog() によるメッセージをアプリケーション・エラーのデバッグで有用となるメッセージに限定することをお勧めします。ULOG が重要度の低いメッセージでいっぱいになると、実際のエラーの特定が難しくなります。

戻り値

userlog() メソッドは、出力された文字数を返し、出力エラーが発生した場合には、負の値を返します。出力エラーには、現在のログ・ファイルのオープン・エラーや書き込みエラーがあります。

次のコード例は、TP::userlog() メソッドの使用方法を示しています。

userlog (“System exception caught: %s”, e.get_id());

CosTransactions::TransactionalObject インターフェイス (任意)

このインターフェイスの使用は避けてください。このインターフェイスの使用は任意となったので、トランザクションに関与するオブジェクトに対して、このインターフェイスの下位インターフェイスを使用する必要はありません。プログラマは、never または ignore トランザクション方針を指定して、オブジェクトがトランザクションに関与しないように指定できます。トランザクションの処理にインターフェイスを使用する必要はありません。指定するのはトランザクション方針だけです。

注記 CORBA のオブジェクト・トランザクション・サービスでは、すべての要求をトランザクションのスコープ内で実行する必要はありません。トランザクションのスコープ外で呼び出された場合の動作は各オブジェクトで決定します。トランザクション・コンテキストを必要とするオブジェクトは、標準例外を生成する場合があります。

 


エラー、例外、およびエラー・メッセージ

TP フレームワークで生成される例外

TP フレームワークでは以下の例外が発生します。発生した例外は、エラーが発生したクライアントに返されるか、TP で検出されます。

CORBA::INTERNAL
CORBA::OBJECT_NOT_EXIST
CORBA::OBJ_ADAPTER
CORBA::INVALID_TRANSACTION
CORBA::TRANSACTION_ROLLEDBACK

これらの例外の理由は明確ではないので、TP フレームワークでは、例外が発生するたびに、理由を示すエラー・メッセージをユーザ・ログ・ファイルに書き込まれます。

サーバ・アプリケーション・コード内の例外

クライアントによって呼び出されたメソッド内で発生した例外は、クライアントによって呼び出されたメソッドで発生した例外と同じように、クライアントに返されます。

TP フレームワークの以下のコールバック・メソッドは、オブジェクトに対するクライアントの要求以外のイベントによって開始されます。

Tobj_ServantBase::activate_object()
Tobj_ServantBase::deactivate_object()
Server::create_servant()

これらのメソッドで例外が発生した場合、まったく同じ例外がクライアントに通知されるわけではありません。ただし、これらの各メソッドは、reason 文字列を含む例外を生成するように定義されています。TP フレームワークでは、コールバックによって生成された例外がキャッチされ、reason 文字列がユーザ・ログ・ファイルに書き込まれます。TP フレームワークでは、クライアントに例外を返すこともできます。これらの例外の詳細については、TP フレームワークの各コールバック・メソッドの説明を参照してください。

Tobj_ServantBase::deactivate_object() の場合、次のコードは DeactivateObjectFailed 例外をスローします。

throw TobjS::DeactivateObjectFailed( “deactivate failed to save
state!”);

このメッセージは、時刻 (hhmmss)、システム名、プロセス名、および呼び出しプロセスのプロセス ID で構成されるタグを付けて、ユーザ・ログ・ファイルに追加されます。タグの最後にはコロンが付けられます。上記の throw 文によって、次の行がユーザ・ログ・ファイルに書き込まれます。

151104.T1!simpapps.247: APPEXC: deactivate failed to save state!

151104 は時刻 (3:11:04pm)、T1 はシステム名、simpapps はプロセス名、247 はプロセス ID をそれぞれ示し、APPEXC はメッセージがアプリケーション例外メッセージであることを示します。

例外とトランザクション

CORBA オブジェクト・メソッドまたは TP フレームワークのコールバック・メソッドで例外が発生しても、TP フレームワークがトランザクションを開始していない限り、トランザクションは自動的にはロールバックされません。例外が発生した条件に基づいてトランザクションをロールバックする場合は、アプリケーション・コードで Current.rollback_only() を呼び出す必要があります。

CORBA オブジェクトに対する入れ子になった呼び出しに関する制約

TP フレームワークには、CORBA オブジェクトに対する入れ子になった呼び出しに関して制約があります。制約の内容は次のとおりです。

TP フレームワークでは、別の CORBA オブジェクトが既にメソッド呼び出しを処理しているオブジェクトのクライアントとして機能していることを検出すると、呼び出し元に CORBA::OBJ_ADAPTER 例外を返します。

注記 アプリケーション・コードではこの動作に依存しないようにしてください。つまり、ユーザはこの動作が発生することを前提に処理を行わないでください。この制限は、今後のリリースで取り払われます。

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy