我们有一个 Java 客户端,它使用 corba 调用多个第三方系统。这些是实现同一组接口(interface)的不同系统。我们获得了使用这些接口(interface)的库(jar 文件)。例如,这些库中的一个对象是
this.that.GeneralException
现在我们必须连接到另一个外部系统,但是他们通过引入更多的包级别更改了命名,例如:
org.example.this.that.GeneralException
我的猜测是,上面的类将被认为是完全不同的。所以我复制了旧客户端,切换到新库并根据新命名模式更改了引用。 由于缺乏新系统的测试环境,我将该客户端与其中一个旧系统连接起来。而且,令人惊奇的是,它运行良好。
这是与 corba 相关的东西还是我在这里遗漏了什么?
编辑
刚刚收到一位第三方开发人员的来信。实际上,这与 corba 没有任何关系。相反,他们试图保持系统的向后兼容性。因此,他们将新命名方案映射到旧命名方案,现在同时提供两种名称下的界面。
最佳答案
CORBA 的 stub 和骨架通常是通过 IDL 生成的。对于 Java 生成的 stub ,IDL 定义的一部分定义了包结构。通过更改客户端接口(interface)类的包结构,您基本上实现了 ORB 期望客户端和服务器之间的契约。您遇到的唯一问题是客户端 stub 引用了服务器上不存在的方法。
关于兼容 Java 类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8561343/