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

Tuxedo CORBA 要求レベルのインターセプタ

 Previous Next Contents Index View as PDF  

RequestInterceptor::exception_occurred

概要

ORB によって呼び出されて、ある要求に固有の、インターセプタが管理していたと考えられる一切の状態を、そのインターセプががクリーンアップすることを許可します。

C++ バインディング

virtual void 
exception_occurred( const ReplyContext & reply_context,
CORBA::Exception_ptr excep_val) = 0;

パラメータ

reply_context

応答が行われているコンテキストについての情報が含まれた ReplyContext へのリファレンスです。

excep_val

ORB またはほかのインターセプタによって報告された例外へのポインタです。

例外

特にありません。

説明

次の 3 つのうちいずれかの場合、要求レベルのインターセプタ・インプリメンテーションの exception_occurred オペレーションが呼び出されます。

  1. 例外が ORB またはメソッドで生成されたのではなく、別のインターセプタによって設定された場合。

  2. ORB がオペレーティング・システムまたは通信関連の問題を検出した場合。

  3. クライアントが、遅延同期 DII の初期化に使用された Request オブジェクトを削除した場合。そのインターセプタの client_response または target_response メソッドの代わりに、exception_occurred メソッドが呼び出されます。ORB が exception_occurred メソッドを呼び出すことにより、インターセプタのインプリメンテーションは、管理していたと考えられる、ある要求に固有の一切の状態を、クリーンアップできるようになります。

戻り値

特にありません。

 


RequestLevelInterceptor::
ClientRequestInterceptor インターフェイス

すべての要求レベルのインターセプタの基本インターフェイスです。これは RequestLevelInterceptor::RequestInterceptor インターフェイスから直接継承されます。このインターフェイスには、クライアント側のすべての要求レベルのインターセプタでサポートされる、オペレーションおよび属性のセットが含まれます。

コード リスト 8-5 OMG IDL 定義

// ファイル: RequestLevelInterceptor.idl

#ifndef _REQUEST_LEVEL_INTERCEPTOR_IDL
#define _REQUEST_LEVEL_INTERCEPTOR_IDL

#include <orb.idl>
#include <Giop.idl>
#include <Interceptors.idl>

#pragma prefix “beasys.com”

module RequestLevelInterceptor
{
local ClientRequestInterceptor : RequestInterceptor
{
InvokeReturnStatus
client_invoke(
in RequestContext request_context,
in ServiceContextList service_context,
in CORBA::DataInputStream request_arg_stream,
in CORBA::DataOutputStream reply_arg_stream,
out ExceptionValue excep_val
);

ResponseReturnStatus
client_response(
in ReplyContext reply_context,
in ServiceContextList service_context,
in CORBA::DataInputStream arg_stream,
out ExceptionValue excep_val
);
};
};
#endif /* _REQUEST_LEVEL_INTERCEPTOR_IDL */

オペレーション _duplicate_narrow、および _nil のインプリメンテーションは、BEA Tuxedo 製品内の CORBA ORB によって提供される、CORBA::LocalBase インターフェイスのインプリメンテーションから間接的に継承されます。

コード リスト 8-6 C++ 宣言

#ifndef _RequestLevelInterceptor_h
#define _RequestLevelInterceptor_h

#include <CORBA.h>
#include <IOP.h>
#include <GIOP.h>
#include <Interceptors.h>

class OBBEXPDLL RequestLevelInterceptor
{
public:
class ClientRequestInterceptor;
typedef ClientRequestInterceptor *
ClientRequestInterceptor_ptr;

class OBBEXPDLL ClientRequestInterceptor :
public virtual RequestInterceptor
{
public:
static ClientRequestInterceptor_ptr
_duplicate(ClientRequestInterceptor_ptr obj);
static ClientRequestInterceptor_ptr
_narrow(ClientRequestInterceptor_ptr obj);
inline static ClientRequestInterceptor_ptr
_nil() { return 0; }

virtual Interceptors::InvokeReturnStatus
client_invoke(
const RequestContext & request_context,
ServiceContextList_ptr service_context,
CORBA::DataInputStream_ptr request_arg_stream,
CORBA::DataOutputStream_ptr reply_arg_stream,
CORBA::Exception_ptr & excep_val ) = 0;

virtual Interceptors::ResponseReturnStatus
client_response(
const ReplyContext & reply_context,
ServiceContextList_ptr service_context,
CORBA::DataInputStream_ptr arg_stream,
CORBA::Exception_ptr & excep_val ) = 0;

protected:
ClientRequestInterceptor(CORBA::LocalBase_ptr obj = 0) { }
virtual ~ClientRequestInterceptor(){ }

private:
ClientRequestInterceptor( const ClientRequestInterceptor&)
{ }
void operator=(const ClientRequestInterceptor&) { }
}; //クラス ClientRequestInterceptor
};
#endif /* _RequestLevelInterceptor_h */

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy