我需要集成Java系统和遗留的C++系统。这两个系统通过CORBA进行通信。由于Java系统运行在JBoss上,所以我们使用JacORB。
为了从.idl文件生成java存根,我们使用maven-idl-编译器插件(使用JacORB)
提供了org.codehaus.mojo idlj-maven-plugin jacorb-idl- org.jacorb 2.2.3
一切正常,但我想修改生成存根的方式(更改方法、类的名称等)。有什么办法可以做到吗?
发布于 2012-10-04 11:31:33
一切正常,但我想修改生成存根的方式(更改方法、类的名称等)。有什么办法可以做到吗?
这是不可能的。
Server Skeleton和Client Stub由Corba在您选择的实现中生成。它们基本上包含Marshaller和Unmarshaller,用于在干扰分布式对象时处理ORB对象参数。
所有这些代码都与CORBA使用的IDL语言高度耦合,因为生成依赖于您提供的IDL。
因此,您不能直接修改存根或框架,这是没有意义的,因为IDL语言的存在是为了确保所有分布式对象之间的公共接口,而不管实现语言是什么。
但是,您始终可以修改IDL本身以使其适应您的需要。
发布于 2015-10-13 00:37:37
通常,人们在这种情况下会使用Façade模式。
https://en.wikipedia.org/wiki/Facade_pattern
像往常一样创建IDL,然后创建另一个类,该类有效地包装了IDL类,但只是将调用向下传递到IDL接口。使用此方法,您可以为可以在程序中使用的方法创建新名称。例如,如果您在某些情况下总是传递相同的参数,那么您也有机会简化方法。
另一个好处是,如果IDL作者决定重命名他们的方法之一或更改参数,您将获得一定程度的保护,因为您不会在程序中直接使用他们的接口。
发布于 2011-07-06 04:10:05
您可以修改$JACORB_HOME/src/org/jacorb/idl下的代码以生成所需的任何内容。请看一下OpDecl.java中的printStreamBody方法,以获得一个看起来易于理解和修改的生成代码示例。
https://stackoverflow.com/questions/6292178
复制相似问题