在实现中访问 ORB

  • 本文关键字:ORB 访问 实现 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 方法获取对我的对象的引用。

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

任何帮助将不胜感激。提前感谢!

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

在单例类中放置对当前活动球体的引用,您可以从非常对象*_Impl访问该对象。

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

最新更新