是否可以将ORB访问到实现中?

时间:2012-04-12 13:22:42

标签: java corba

我有一个棘手的问题。作为CORBA的新手,我无法摆脱它。

如何从另一个实现中实例化一个实现对象?

通常,如果我有一个接口A.我会创建一个A_Impl类(在A_Impl.java文件中),从idl生成的A_POA类扩展。

然后,在服务器端,我会做这样的事情:

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的一个方法需要返回A时呢?

在我的B_impl类中,我无法访问orb,因此无法使用activate_object方法获取对象的引用。

我怎样才能返回这样的对象?

非常感谢任何帮助。 提前谢谢!

3 个答案:

答案 0 :(得分:1)

CORBA已经提供了一个可用于获取现有ORB引用的函数 - ORB_init()。对于大多数ORB,该函数的行为类似于单例,并且将返回现有的ORB对象,假设每次调用它时都使用相同的ORB ID。

答案 1 :(得分:0)

在单个类中引用当前活动球,您可以从对象*_Impl到达。

答案 2 :(得分:0)

似乎(对于我来说不可理解的原因),构造函数不是由idl生成的。 创建构造函数允许我简单地将对象作为引用传递,并使它们对我的类可见。 是的......就这么简单:)