我有一个棘手的问题。作为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方法获取对象的引用。
我怎样才能返回这样的对象?
非常感谢任何帮助。 提前谢谢!
答案 0 :(得分:1)
CORBA已经提供了一个可用于获取现有ORB引用的函数 - ORB_init()
。对于大多数ORB,该函数的行为类似于单例,并且将返回现有的ORB对象,假设每次调用它时都使用相同的ORB ID。
答案 1 :(得分:0)
在单个类中引用当前活动球,您可以从对象*_Impl
到达。
答案 2 :(得分:0)
似乎(对于我来说不可理解的原因),构造函数不是由idl生成的。 创建构造函数允许我简单地将对象作为引用传递,并使它们对我的类可见。 是的......就这么简单:)