服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

rmi和corba


  rmi和corba
2003-6-16 matrix让你不断进步 浏览选项: 颜色 默认 灰度 橄榄色 绿色 蓝色 褐色 红色 本文已被浏览 14 次



java中rmi和corba的区别:

1、定义接口:
rmi自己定义接口(interface)
corba生成idl代码,然后使用idlj -fall name.idl生成接口和几个类文件

2、启动服务:
rmi启动的是rmiregistry (port)默认1099
corba启动的是tnameserv

3、实现的继承类:
rmi extends unicastremoteobject
corba extends 运行idlj时 生成的_nameimplbase

4、实现类的rebind
rmi可以直接rebind 如:naming.rebind("rmi://localhost/meeting",meetingserver);
corba需要先调用init()如:
orb orb=orb.init(avgs,null);
motdimpl impl=new motdimpl(motdfile);
orb.connect(impl);
org.omg.corba.object objref=
orb.resolve_initial_references("nameservice");
namingcontext ncref=namingcontexthelper.narrow(objref);
namecomponent nc=new namecomponent(motdservice,"");
namecomponent[] path=new namecomponent[]{nc};
ncref.rebind(path,impl);

这里corba就要麻烦很多了

5、客户端调用corba的调用跟实现类的绑定差不多如:
orb orb=orb.init(avgs,null);
org.omg.corba.object objref=
orb.resolve_initial_references("nameservice");
namingcontext ncref=namingcontexthelper.narrow(objref);
namecomponent nc=new namecomponent("messageoftheday","");
namecomponent path[]=new namecomponent[]{nc}
org.omg.corba.object motdobj=ncref.resolve(path);
motd motdref=motdhelper.narrow(motdobj);
system.out.println(motdref.getmotd());
rmi只要lookup就可以了

总的来说其实rmi和corba都差不多,都是桩和框架,两者相互竞争,但是在java中都可以相互调用。这归功于rmi_iiop.
from-javaresearch.org

扫描关注微信公众号