1

トリッキーな問題があります。そして、CORBAに慣れていないので、私はそれから抜け出すことができません。

別の実装から実装オブジェクトをインスタンス化するにはどうすればよいですか?

通常、インターフェイスAがある場合は、idlから生成されたA_POAクラスから拡張したA_Implクラスを(A_Impl.javaファイルに)作成します。

次に、サーバー側で次のようにします。

AImpl  my_a_impl = new A_Impl ();
org.omg.CORBA.Object ref = orb.activate_object(my_a_impl);
A my_a_object = A.narrow(ref);

しかし、別のオブジェクトBのメソッドの1つがAを返す必要がある場合はどうなるでしょうか。

私のB_implクラスでは、orbにアクセスできないため、activate_objectメソッドを使用してオブジェクトへの参照を取得できません。

次に、そのようなオブジェクトを返すにはどうすればよいですか?

どんな助けでも大歓迎です。前もって感謝します !

4

3 に答える 3

1

CORBAは、既存のORB参照を取得するために使用できる関数をすでに提供しています- ORB_init()。ほとんどのORBの場合、その関数はシングルトンのように動作し、呼び出すたびに同じORB IDを使用すると仮定すると、既存のORBオブジェクトを返します。

于 2012-04-12T17:31:15.000 に答える
0

現在アクティブなオーブへの参照をシングルトンクラスに配置します。これは、非常にオブジェクトから到達できます*_Impl

于 2012-04-12T14:21:08.410 に答える
0

(私には理解できない理由で)コンストラクターはidlによって生成されないようです。コンストラクターを作成すると、オブジェクトを参照として渡すだけで、クラスから見えるようになります。はい...それと同じくらい簡単です:)

于 2012-04-12T14:39:20.537 に答える