我有一个用 Java 编写的客户端-服务器应用程序,使用 CORBA 进行通信。使用的ORB 是orbd,Java6 平台提供的ORB。我必须将 Java 服务器实现替换为另一个用 C++ 编写的实现。所以问题是,在 CORBA 库的免费源代码实现中,哪个更好地与这个 ORB 互操作?我是否应该替换 Java ORB 并同时使用 C++ 库提供的 ORB?
目标是在用新的 C++ 实现替换已经运行的服务器时实现简单而平稳的过渡。还有什么我应该考虑的吗?
很久没有使用 CORBA 来实现 Java 和 C++ 的互操作性了,所以我的回答可能会有点过时。
我发现可以很好地协同工作的是omniORB (C++) 和JacORB (Java)。您可以在 google 上搜索这些库,看看它们是否仍然受支持。
我还记得我在使用“原生”Java CORBA 时遇到了很大的问题(Sun Bugs Parade 中有很多错误,已经开放了很多年......)但那是在 JDK1.4 的时候,希望现在情况会好一些...... .
TAO 绝对是商业上使用最多的开源 C++ ORB。它与 JacORB 作为 Java ORB 配合使用非常好,但您也可以使用 JDK ORB。如果该软件当前可与 JDK ORB 一起使用,那么它没有理由不能与 TAO 一起使用。如果您遇到任何问题,您可以将 JDK ORB 替换为 JacORB。
哦,关于上一篇文章,ZEN Java ORB 已死,不再开发。对于 Java,如果 JDK ORB 不足以满足您的需求,您应该使用 JacORB。
如果您需要商业支持,它也可用。我们使用 Remedy IT ( http://www.remedy.nl ) 来满足我们的支持需求(TAO 和 JacORB)。
我有一些 Java 客户端将大量数据推送/拉入用 Mico 编写的 C++ 服务器。永远不要与他们有任何问题。
我们也在使用 Visibroker 来实现它的负载平衡功能,但很快就会摆脱它。
你看过 ACE/TAO ORB。
https://www.dre.vanderbilt.edu/~schmidt/TAO.html
ACE 基本上是一个操作系统抽象层。
TAO 是建立在这个抽象之上的 CORBA ORB,因此它是跨平台的。
TAO 的 Java 版本是 ZEN:
http ://www.zen.uci.edu/
尽管从技术上讲,您的 ORB 不需要相同。只要符合 CORBA 协议/规范,它们就应该是可互操作的。因此,尽管您可以使用 ZEN,但使用 JacORB 也同样容易。