セション情報管理は、CORBAサービスのサーバオブジェクトとして機能を提供します。このサーバオブジェクトをセション情報管理オブジェクト(SMO:Session information Management Object)と呼びます。SMOの機能を使用するためには、SMOが提供するIDLにしたがってSMOに処理を依頼します。
SMOが提供するIDLを以下に示します。セション情報管理が提供するのIDLは、3つのインタフェースから構成されます。
SMOインタフェースは、セション情報域を操作するトランザクションアプリケーションで使用するインタフェースです。
SMO_LISTENERインタフェースおよびSMO_LISTENER2インタフェースは、SMOからの未使用時間監視による事象通知を受け付ける事象通知リスナオブジェクトが実装するインタフェースです。SMO_LISTENERインタフェースは、クライアント識別子を使用したセション情報域に対する事象通知を受信する場合に実装し、SMO_LISTENER2インタフェースは、セションIDを使用したセション情報域に対する事象通知を受信する場合に実装します。
インタフェースの使用方法については、“アプリケーション作成ガイド(コンポーネントトランザクションサービス編)”の“セション情報管理機能を使用したトランザクションアプリケーションの作成”を参照してください。
module ISTD { interface SMO { // クライアント識別子のデータ型 const unsigned long ClientIdLen = 48; // クライアント識別子長 typedef sequence<octet,ClientIdLen> ClientId; // クライアント識別子型 // セションIDのデータ型 const unsigned long SessionIdLen = 48; // セションID長 typedef octet SessionId[SessionIdLen]; // セションID型 // ユーザ例外処理の定義 exception InvalidArgument { string reason; }; // パラメタ異常 exception ProcessFailed {}; // 処理異常 exception AlreadyExist {}; // 既登録 exception NotExist {}; // 対象セション情報域なし exception NotRegistered {}; // 対象リスナ未登録 // create_info の復帰値 const unsigned long TD_OK_NEW = 0; // 新規生成 const unsigned long TD_OK_OLD = 1; // 既存セション情報域返却 // セション情報域型 typedef sequence<octet> SessionInfo; // // --- operations for client id --- // long create_info( // セション情報域の獲得 in ClientId CLIENT_ID, in unsigned long slotno, in unsigned long size, in unsigned long lifetime ) raises( InvalidArgument, ProcessFailed, AlreadyExist ); void set_info( // セション情報域へのデータを書込 in ClientId CLIENT_ID, in unsigned long slotno, in SessionInfo data ) raises( InvalidArgument, NotExist ); void get_info( // セション情報域からのデータを読込 in ClientId CLIENT_ID, in unsigned long slotno, out SessionInfo data ) raises( InvalidArgument, NotExist ); void delete_info( // セション情報域の解放 in ClientId CLIENT_ID, in unsigned long slotno ) raises( InvalidArgument, NotExist ); void add_listener( // リスナの登録 in Object LISTENER_OR ) raises( InvalidArgument ); void del_listener( // リスナの抹消 in Object LISTENER_OR ) raises( InvalidArgument, NotRegistered ); // // --- operations for session id --- // long create_info2( // セション情報域の獲得 in SessionId SESSION_ID, in unsigned long slotno, in unsigned long size, in unsigned long lifetime ) raises( InvalidArgument, ProcessFailed, AlreadyExist ); void set_info2( // セション情報域へのデータを書込 in SessionId SESSION_ID, in unsigned long slotno, in SessionInfo data ) raises( InvalidArgument, NotExist ); void get_info2( // セション情報域からのデータを読込 in SessionID SESSION_ID, in unsigned long slotno, out SessionInfo data ) raises( InvalidArgument, NotExist ); void delete_info2( // セション情報域の解放 in SessionId SESSION_ID, in unsigned long slotno ) raises( InvalidArgument, NotExist ); void add_listener2( // リスナの登録 in Object LISTENER_OR ) raises( InvalidArgument ); void del_listener2( // リスナの抹消 in Object LISTENER_OR ) raises( InvalidArgument, NotRegistered ); }; // SMO interface SMO_LISTENER { // 事象通知リスナインタフェース(クライアント識別子用) // クライアント識別子のデータ型 const unsigned long ClientIdLen = 48; // クライアント識別子長 typedef sequence<octet,ClientIdLen> ClientId; // クライアント識別子型 // セション情報域型 typedef sequence<octet> SessionInfo; // 事象通知データ型(クライアント識別子用) struct SlotInfo { ClientId CLIENT_ID; unsigned long slotno; SessionInfo data; }; typedef sequence<SlotInfo> DelSlotInfo; void timeout( // イベント受信 in DelSlotInfo data ); }; // SMO_LISTENER interface SMO_LISTENER2 { // 事象通知リスナインタフェース(セションID用) // セションIDのデータ型 const unsigned long SessionIdLen = 48; // セションID長 typedef octet SessionId[SessionIdLen]; // セションID型 // セション情報域型 typedef sequence<octet> SessionInfo; // 事象通知データ型(セションID用) struct SlotInfo { SessionId SESSION_ID; unsigned long slotno; SessionInfo data; }; typedef sequence<SlotInfo> DelSlotInfo; void timeout( // イベント受信 in DelSlotInfo data ); }; // SMO_LISTENER2 };
注意事項
本IDLは、セション情報管理のインタフェース情報を示すためのものです。
本IDLにIDLコンパイラを適用する必要はありません。また、本IDLをIDLコンパイラに適用して生成されたスタブプログラムおよびスケルトンプログラムは、セション情報管理との通信には使用できません。セション情報管理のスタブおよびスケルトンは、提供ライブラリに含まれます。
本IDLの言語マッピングについては、“アプリケーション作成ガイド(CORBAサービス編)”を参照してください。