9.1 tie機能の働き
通常,オブジェクトインプリメンテーションクラスは,idl2cppまたはidl2javaコンパイラによって生成されたサーバントクラスを継承します。また,サーバントクラスは,PortableServer.Servant::Servant(C++),org.omg.PortableServer.Servant(Java)を継承します。既存のクラスを変更してBorland Enterprise Server VisiBrokerサーバントクラスを継承するのが不便または不可能な場合は,tie機能が代替手段となります。
tie機能はオブジェクトサーバに,PortableServer::Servant(C++)またはorg.omg.PortableServer.Servant(Java)を継承するデリゲータインプリメンテーションクラスを提供します。デリゲータインプリメンテーションは独自のセマンティクスを持たないで,ただ受信したすべてのリクエストを,個別にインプリメントできる実インプリメンテーションクラスにデリゲート(委任)するだけです。実インプリメンテーションクラスは,PortableServer::Servant(C++),またはorg.omg.PortableServer.Servant(Java)を継承する必要はありません。
tie機能を使用することで,二つのファイルがIDLコンパイラから生成されます。
-
<interface_name>POATieは,すべてのIDL定義メソッドのインプリメンテーションをデリゲートまで遅延させます。デリゲートは<interface_name>Operationsインタフェースをインプリメントします。レガシーインプリメンテーションは,オペレーションインタフェースをインプリメントし,またリアルインプリメンテーションをデリゲートするために少しだけ継承できます。
-
<interface_name>Operationsは,オブジェクトインプリメンテーションがインプリメントしなければならないすべてのメソッドを定義します。このインタフェースは,tie機能を使用する場合に,対応する<interface_name>POATieクラスのデリゲートオブジェクトとして動作します。