Same org.omg.CORBA.Object with different IOR string expression

本文介绍了一种正确的CORBA IOR比较方法,避免使用简单的字符串匹配。通过将IOR转换为CORBA对象并利用_is_equivalent方法来判断两个IOR是否指向同一个对象。

Some different IOR string can be same org.omg.CORBA.Object object.

 

So the method to judge whether 2 IOR are same cannot use String.equal, instead:

 

    private boolean isSameIOR(String ior1, String ior2)
    {
        org.omg.CORBA.Object obj1 = null;
        org.omg.CORBA.Object obj2 = null;
       
        try {
            obj1 = orb.string_to_object(ior1);
            obj2 = orb.string_to_object(ior2);
       
            return obj1._is_equivalent(obj2);
   
        } catch (Exception e) {
            return false;
        }
    }

 

For example, following 2 IOR are different with String expression, but they are point to same object.

       [IOR:000000000000003C49444C3A6F72672F63736170692F66772F66775F6163636573732F74727573745F616E645F73656375726974792F4970496E697469616C3A312E30000000000100000000000000780001020 00000000E3133352E3235322E3138312E3300BE5A00000021626A74657374332F7061726C6179504F412F4970496E697469616C5061726C6179313431000000020000000000000008000000004A414300000000010000001C00000000000100010000000105010001000101090000000105010001]
[IOR:000000000000003C49444C3A6F72672F63736170692F66772F66775F6163636573732F74727573745F616E645F73656375726974792F4970496E697469616C3A312E30000000000100000000000000780001025 00000000E3133352E3235322E3138312E3300BE5A00000021626A74657374332F7061726C6179504F412F4970496E697469616C5061726C6179313431000000020000000000000008000000004A414300000000010000001C00000000000100010000000105010001000101090000000105010001]

 

if use orb.rebind(naming, orb.string_to_object(ior)), and orb.resolve(naming) then

both IOR can get same result value.

 

 

 

`import org.omg.CORBA.PUBLIC_MEMBER` 用于在 Java 代码中引入 `org.omg.CORBA` 包下的 `PUBLIC_MEMBER` 类或常量。`org.omg.CORBA` 是 Java 中用于支持 CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)的包,CORBA 是一种用于实现分布式对象系统的标准。 ### `PUBLIC_MEMBER` 的用途 `PUBLIC_MEMBER` 是 CORBA 规范中用于描述接口成员可见性的一个常量。在 CORBA 中,接口定义语言(IDL)用于定义分布式对象的接口,而 Java 代码需要与这些 IDL 定义的接口进行交互。`PUBLIC_MEMBER` 通常用于表示接口中的公共成员,这些成员可以被外部访问。 ### 使用说明 在 Java 代码中使用 `import org.omg.CORBA.PUBLIC_MEMBER` 后,就可以直接使用 `PUBLIC_MEMBER` 常量。以下是一个简单的示例代码: ```java import org.omg.CORBA.PUBLIC_MEMBER; public class CorbaExample { public static void main(String[] args) { // 模拟使用 PUBLIC_MEMBER 常量 int visibility = PUBLIC_MEMBER.value; System.out.println("Visibility value: " + visibility); } } ``` 在这个示例中,通过 `import` 语句引入了 `PUBLIC_MEMBER`,然后在 `main` 方法中使用了该常量的 `value` 属性。 ### 注意事项 - `org.omg.CORBA` 相关的类和接口主要用于与 CORBA 系统进行交互,在现代 Java 开发中,由于其他分布式技术(如 RESTful API、gRPC 等)的兴起,CORBA 的使用相对较少。 - 从 Java 9 开始,CORBA 相关的模块被标记为废弃,在 Java 11 及更高版本中,CORBA 模块已被移除。如果需要在这些版本中使用 CORBA,需要手动添加相关的依赖。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值