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

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

 Previous Next Contents Index View as PDF  

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

この章では、要求レベルのインターセプタのインプリメントに使用する次のインターフェイスについて説明します。

これらのインターフェイスは、位置制約付きオブジェクトです。リファレンスをその位置 (プロセス) の外部に渡そうとしたり、CORBA ORB object_to_string オペレーションを使用して、このインターフェイスをサポートしているオブジェクトを外部化しようとしたりすると、CORBA MARSHAL システム例外 (CORBA::MARSHAL) が発生します。

 


インターセプタの階層構造

要求レベルのインターセプタは、2 つのインターフェイスに分かれており、クライアント側とターゲット側で別個に機能します。次の図では、BEA Tuxedo 製品でサポートしている要求レベルのインターセプタの継承の階層構造を示します。


 

未使用インターフェイスについての注意事項

RequestLevelInterceptor インターフェイスから派生したクラスのオペレーションのためのメソッド・シグニチャには、次のインターフェイスのパラメータが含まれます。

これらのインターフェイスは BEA Tuxedo 製品では使用しません。しかし BEA Tuxedo 製品では、将来のリリースでこれらのインターフェイスのインプリメンテーションが提供されたときに CORBA アプリケーションを再コンパイルしなくてよいように、これらを定義してあります。ORB は常に実際の引数に対する nil オブジェクトを渡します。この引数を使用しようとしないでください。プロセスが深刻なエラーにより停止する可能性があります。

 


Interceptors::Interceptor インターフェイス

Interceptors::Interceptor インターフェイスは、要求レベルのインターセプタをはじめとする、すべての種類のインターセプタの基本インターフェイスとして定義されます。このインターフェイスには、全種類のインターセプタでサポートされる、オペレーションおよび属性のセットが含まれます。Interceptors::Interceptor インターフェイスは、抽象インターフェイスとして定義されるため、インターフェイスのインスタンスはインスタンス化できません。

コード リスト 8-1 Interceptors::Interceptor インターフェイスの OMG IDL

// ファイル: Interceptors.idl
#ifndef _INTERCEPTORS_IDL
#define _INTERCEPTORS_IDL

#pragma prefix "beasys.com"

module Interceptors
{
native ExceptionValue;

local Interceptor
{
readonly attribute string id; // インターセプタの識別子

// インターセプタのシャットダウン時に ORB によって呼び出される
ShutdownReturnStatus shutdown(
in ShutdownReason reason,
out ExceptionValue excep_val
);
}; // 位置制約付き
};
#endif /* _INTERCEPTORS_IDL */

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

コード リスト 8-2 Interceptors::Interceptor インターフェイスの C++ 宣言

#ifndef _INTERCEPTORS_H
#define _INTERCEPTORS_H

#include <string.h>
#include <CORBA.h>

class OBBEXPDLL Interceptors
{
public:
class Interceptor;
typedef Interceptor * Interceptor_ptr;

enum InvokeReturnStatus
{
INVOKE_NO_EXCEPTION,// 通常どおり進行する
REPLY_NO_EXCEPTION, // 進行を停止し、応答処理を開始する
REPLY_EXCEPTION // 進行を停止し、例外を返す
};

enum ResponseReturnStatus
{
RESPONSE_NO_EXCEPTION, // 通常どおり進行する
RESPONSE_EXCEPTION
};

enum ShutdownReturnStatus
{
SHUTDOWN_NO_EXCEPTION,
SHUTDOWN_EXCEPTION
};

enum ShutdownReason
{
ORB_SHUTDOWN,
CONNECTION_ABORTED,
RESOURCES_EXCEEDED
};

struct Version
{
CORBA::Octet major_version;
CORBA::Octet minor_version;
};
typedef Version * Version_ptr;

//+
// すべてのインターセプタの抽象基本インターフェイス
//-
class OBBEXPDLL Interceptor : public virtual CORBA::LocalBase
{
public:
static Interceptor_ptr _duplicate(Interceptor_ptr obj);
static Interceptor_ptr _narrow(Interceptor_ptr obj);
static Interceptor_ptr _nil();
virtual ShutdownReturnStatus
shutdown( ShutdownReason reason,
CORBA::Exception_ptr & excep_val) = 0;
virtual CORBA::String id() = 0;

protected:
Interceptor();
virtual ~Interceptor();
};
};#endif /* _INTERCEPTORS_H */

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy