1

我需要将 Java 系统与遗留 C++ 系统集成。这两个系统通过 CORBA 进行通信。由于 Java 系统在 JBoss 上运行,我们使用 JacORB。

要从 .idl 文件生成 java 存根,我们使用 maven-idl-compiler 插件(使用 JacORB)

org.codehaus.mojo idlj-maven-plugin org.jacorb jacorb-idl-compiler 2.2.3 提供

一切正常,但我想修改存根的生成方式(更改方法、类等的名称)。有什么办法吗?

4

3 回答 3

1

一切正常,但我想修改生成存根的方式(更改方法、类等的名称)。有什么办法吗?

这是不可能的。

服务器骨架和客户端存根由 Corba 在您选择的实现中生成。它们基本上包含 Marshaller 和 Unmarshaller 以在您干扰分布式对象时处理 ORB 对象参数。

所有这些代码都与 CORBA 使用的 IDL 语言高度耦合,因为生成依赖于您提供的 IDL。

因此,您不能直接修改存根或骨架,这是没有意义的,因为 IDL 语言的存在是为了确保所有分布式对象之间的通用接口,无论实现语言如何。

但是,您始终可以修改 IDL 本身以使其适应您的需要。

于 2012-10-04T03:31:33.463 回答
1

通常人们在这种情况下所做的就是使用外观模式。

https://en.wikipedia.org/wiki/Facade_pattern

像往常一样创建 IDL,然后创建另一个有效地包装 IDL 类但只是将调用传递给 IDL 接口的类。使用此方法,您可以为可在程序中使用的方法创建新名称。例如,如果您在某些情况下总是传递相同的参数,您也有机会简化方法。

另一个优点是,如果 IDL 作者决定重命名他们的方法之一或更改参数,您将获得一定程度的保护,因为您没有直接在程序中使用他们的接口。

于 2015-10-12T16:37:36.677 回答
0

您可以修改 $JACORB_HOME/src/org/jacorb/idl 下的代码以生成您想要的任何内容。查看 OpDecl.java 中的 printStreamBody 方法,以获取看起来易于理解和修改的生成代码示例。

于 2011-07-05T20:10:04.597 回答