ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(CORBAサービス編)
Interstage

5.13.6 オブジェクトの活性化

オブジェクトが活性状態とは、POAオブジェクトの管理するAOM(Active Object Map)に、あるServantオブジェクトがオブジェクトIDと関連付けられて登録されている状態のことです。
Servantオブジェクトは、インスタンスとして生成されただけでは、POAオブジェクトに認識されないため、activate_object()/activate_object_with_id()メソッドを使用して、オブジェクトIDとの関連付けをPOAオブジェクトに登録する必要があります。Servantオブジェクトを活性化する方法を以下に示します。


明示的にServantオブジェクトを活性化する方法

Servantオブジェクトの作成(new)後に、activate_object()/activate_object_with_id()メソッドでAOMに登録します。


// Servantの生成
org.omg.PortableServer.Servant svt = new UserServant();

// Servantの活性化
Poa.activate_object ( svt ); 

// ID指定によるServantの活性化
String userid = "USERID"; 
Poa.activate_object_with_id( userid.getBytes(), svt );

ソース内のPoaオブジェクト:POAクラスのインスタンス


なお、活性化の際にはオブジェクトIDが必要となりますが、オブジェクトIDの割り付けは、IdAssignmentPolicyに従って処理されます。

暗黙的にServantオブジェクトを活性化する方法

POAオブジェクトがIMPLICIT_ACTIVATIONポリシを持っている場合は、servant_to_reference()メソッドを使用してリファレンスを生成すると、自動的にServantオブジェクトが活性化されて、オブジェクトリファレンスが通知されます。暗黙的活性化については、“5.13.8 暗黙的活性化(Implicit Activation)”を参照してください。


// Servantの生成
org.omg.PortableServer.Servant svt = new UserServant();

// IMPLICIT_ACTIVATIONポリシを指定している場合、自動的にactivateされる
org.omg.CORBA.Object Obj =  Poa.servant_to_reference( svt ); 

) ソース内のPoaオブジェクト:POAクラスのインスタンス


なお、暗黙的活性化の場合は、オブジェクトIDはPOAオブジェクトにより自動的に割り付けます。このため、SYSTEM_IDにIdAssignmentPolicyを設定しておく必要があります。