[转]Orbacus名字服务的使用

Technorati 标签:

原文地址:http://www.blogjava.net/chaocai/archive/2006/11/19/82111.html

Orbacus 是 IONA 提供的开源 COBRA 实现,但其相关技术文档去很不详尽,而且还有错误,以下是以举例的方式说明了如何使用其提供的名字服务。

1 启动名字服务

java -Dooc.orb.oa.endpoint="iiop --port 9998" -classpath OBNaming.jar;OB.jar com.ooc.CosNaming.Server

其中通过 ooc.orb.oa.endpoint="iiop --port 9998" 设置服务的端口

2 服务器段代码:

import helloorb.Hello;
 
import helloorb.Hello_Impl;
 
import org.omg.CosNaming.NameComponent;
 
import org.omg.CosNaming.NamingContextExt;
 
import org.omg.CosNaming.NamingContextExtHelper;
 
import com. ooc .CORBA.ORB;
 
import com.ooc.OBPortableServer.POA;
 
import com.ooc.OBPortableServer.POAHelper;
 
import com.ooc.OBPortableServer.POAManager;
 
public class ByNamingServer {
 
public static void main(String[] args) {
 
java.util.Properties props = System.getProperties();
 
props.put( "org.omg.CORBA.ORBClass" , "com.ooc.CORBA.ORB" );
 
props.put( "org.omg.CORBA.ORBSingletonClass" ,
 
"com.ooc.CORBA.ORBSingleton" );
 
org.omg.CORBA.ORB orb = null ;
 
try {
 
orb = ORB.init(args, props);
 
org.omg.CORBA.Object poaObj = null ;
 
try {
 
poaObj = orb.resolve_initial_references( "RootPOA" );
 
} catch (org.omg.CORBA.ORBPackage.InvalidName ex) {
 
throw new RuntimeException();
 
}
 
POA rootPOA = POAHelper.narrow(poaObj);
 
org.omg.PortableServer.POAManager manager = rootPOA
 
.the_POAManager();
 
org.omg.CORBA.Object obj = null ;
 
try {
 
String nameService= "corbaloc::127.0.0.1:9998/NameService" ; 
//指示不同的服务器
 
obj = orb.string_to_object(nameService);
 
} catch (Exception ex) {
 
ex.printStackTrace();
 
throw new RuntimeException();
 
}
 
if (obj == null ) {
 
throw new RuntimeException();
 
}
 
NamingContextExt nc = null ;
 
try {
 
Hello_Impl helloImpl = new Hello_Impl();
 
Hello hello = helloImpl._this(orb);
 
NameComponent[] a2Name = new NameComponent[1];
 
a2Name[0] = new NameComponent();
 
a2Name[0]. id = "HelloServer" ;
 
a2Name[0]. kind = "" ;
 
nc = NamingContextExtHelper.narrow(obj);
 
nc.rebind(a2Name, hello);
 
manager.activate();
 
} catch (Exception ex) {
 
ex.printStackTrace();
 
throw new RuntimeException();
 
}
 
} catch (Exception e1) {
 
e1.printStackTrace();
 
}
 
}
 
}
 

3 客户端代码

import org.omg.CosNaming.NameComponent;
 
import org.omg.CosNaming.NamingContextExt;
 
import org.omg.CosNaming.NamingContextExtHelper;
 
import helloorb.Hello;
 
import helloorb.HelloHelper;
 
public class ByNamingClient {
 
public static void main(String args[]) {
 
java.util.Properties props = System.getProperties();
 
props.put( "org.omg.CORBA.ORBClass" , "com.ooc.CORBA.ORB" );
 
props.put( "org.omg.CORBA.ORBSingletonClass" ,
 
"com.ooc.CORBA.ORBSingleton" );
 
int status = 0;
 
org.omg.CORBA.ORB orb = null ;
 
try {
 
orb = org.omg.CORBA.ORB.init(args, props);
 
status = run(orb);
 
} catch (Exception ex) {
 
ex.printStackTrace();
 
status = 1;
 
}
 
if (orb != null ) {
 
try {
 
orb.destroy();
 
} catch (Exception ex) {
 
ex.printStackTrace();
 
status = 1;
 
}
 
}
 
System.exit(status);
 
}
 
static int run(org.omg.CORBA.ORB orb) {
 
org.omg.CORBA.Object obj = null ;
 
/* try {
String refFile = "Hello.ref";
java.io.BufferedReader in = new java.io.BufferedReader(
new java.io.FileReader(refFile));
String ref = in.readLine();
obj = orb.string_to_object(ref);
} catch (java.io.IOException ex) {
ex.printStackTrace();
return 1;
}*/
 
try {
 
obj = orb.string_to_object( "corbaloc::127.0.0.1:9998/NameService" );
 
NamingContextExt nc = NamingContextExtHelper.narrow(obj);
 
/* NameComponent[] a2Name = new NameComponent[1];
a2Name[0] = new NameComponent();
a2Name[0].id = "HelloServer";
a2Name[0].kind = "";*/
 
Hello hello = HelloHelper.narrow(nc.resolve_str( "HelloServer" ));
 
hello.say_hello();
 
} catch (Exception e){
 
e.printStackTrace();
 
}
 
return 0;
 
}
 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值