Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JACORB maven编译器生成自定义IDL 我需要将java系统与传统C++系统集成。这两个系统通过CORBA进行通信。 因为Java系统在JBoss上运行,所以我们使用JacORB_Java_C++_Corba_Jacorb - Fatal编程技术网

使用JACORB maven编译器生成自定义IDL 我需要将java系统与传统C++系统集成。这两个系统通过CORBA进行通信。 因为Java系统在JBoss上运行,所以我们使用JacORB

使用JACORB maven编译器生成自定义IDL 我需要将java系统与传统C++系统集成。这两个系统通过CORBA进行通信。 因为Java系统在JBoss上运行,所以我们使用JacORB,java,c++,corba,jacorb,Java,C++,Corba,Jacorb,为了从.idl文件生成java存根,我们使用maven idl编译器插件(使用JacORB) org.codehaus.mojo idlj maven插件 org.jacorb jacorb-idl编译器 2.2.3 假如 一切正常,但我想修改存根生成的方式(更改方法、类的名称等)。有什么办法吗?您可以修改$JACORB_HOME/src/org/JACORB/idl下的代码来生成您想要的任何内容。查看OpDecl.java中的printStreamBody方法,以获取一个生成代码的示例,该代

为了从.idl文件生成java存根,我们使用maven idl编译器插件(使用JacORB)

org.codehaus.mojo idlj maven插件 org.jacorb jacorb-idl编译器 2.2.3 假如


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

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

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

这是不可能的。

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

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

因此,您不能直接修改存根或骨架,这是没有意义的,因为IDL语言可以确保所有分布式对象之间的公共接口,而不管实现语言是什么


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

在这种情况下,人们通常会使用Façade模式

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


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

为什么要更改生成的代码?如果一切都很好,你想解决什么问题?我基本上得出了相同的结论,放弃了修改生成的存根的想法。最后,我调整了idl并提供了一些包装来隐藏一些自动生成的内容。这不是我一直在寻找的解决方案,但我想这是我对JacORB的特定版本所能做的一切(我无法改变它)。谢谢你的回答。@MarcinKozłowicz哈哈,你是说你用了我的答案!