使用JACORB maven编译器生成自定义IDL

时间:2011-06-09 11:37:55

标签: java c++ corba jacorb

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

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

org.codehaus.mojo IDLJ - Maven的插件      org.jacorb    jacorb-IDL编译    2.2.3  提供  

一切正常但我想修改存根的生成方式(更改方法,类等的名称)。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:1)

  

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

这是不可能的。

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

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

因此,你无法直接修改存根和骨架,这是没有意义的,因为IDL语言可以确保所有分布式对象之间的通用接口,无论实现语言如何。

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

答案 1 :(得分:1)

通常人们在这种情况下使用的是外墙模式。

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

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

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

答案 2 :(得分:0)

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

相关问题