Corba算是比较古老的分布式系统了,因为工作需要,需要访问Corba的服务器(也是用JacORB)实现的一套系统,其实就是TMF814相关规范的Corba实现,以下是摸索的点滴,在此稍作记录,以防忘记。
[list]
[*]访问服务器的几种方式
[list=1]
[*]IOR的方式,就是将服务信息导出为字符串,直接传给客户端相关代码
[*]ORBInitRef.NameService,比如:corbaloc::172.31.0.140:13000/NameService
[/list]
[*]JacORB的几个特殊属性
[*]双向IIOP的访问
首先需要设置属性:
其次激活特定的POA Manager,代码如下:
[/list]
[list]
[*]访问服务器的几种方式
[list=1]
[*]IOR的方式,就是将服务信息导出为字符串,直接传给客户端相关代码
[*]ORBInitRef.NameService,比如:corbaloc::172.31.0.140:13000/NameService
[/list]
[*]JacORB的几个特殊属性
prop.put( "org.omg.CORBA.ORBClass", "org.jacorb.orb.ORB" );
prop.put( "org.omg.CORBA.ORBSingletonClass",
"org.jacorb.orb.ORBSingleton" );
[*]双向IIOP的访问
首先需要设置属性:
prop.put( "org.omg.PortableInterceptor.ORBInitializerClass.bidir_init",
"org.jacorb.orb.giop.BiDirConnectionInitializer");
其次激活特定的POA Manager,代码如下:
Any any = orb.create_any();
BidirectionalPolicyValueHelper.insert(any, BOTH.value);
Policy[] policies = new Policy[1];
policies[0] = orb.create_policy(
BIDIRECTIONAL_POLICY_TYPE.value, any);
org.omg.PortableServer.POA poa = root_poa.create_POA(
"BiDirPOA", root_poa.the_POAManager(), policies);
poa.the_POAManager().activate();
[/list]