我需要将Java系统与传统的C ++系统集成。这两个系统通过CORBA进行通信。 由于Java系统在JBoss上运行,我们使用JacORB。
要从.idl文件生成java存根,我们使用maven-idl-compiler插件(使用JacORB)
org.codehaus.mojo IDLJ - Maven的插件 org.jacorb jacorb-IDL编译 2.2.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方法,以获取易于理解和修改的生成代码示例。