使用rmizookeeper实现远程调用框架-编程开发技术

使用rmizookeeper实现远程调用框架-编程开发技术

ID:27800048

大小:180.49 KB

页数:17页

时间:2018-12-06

使用rmizookeeper实现远程调用框架-编程开发技术_第1页
使用rmizookeeper实现远程调用框架-编程开发技术_第2页
使用rmizookeeper实现远程调用框架-编程开发技术_第3页
使用rmizookeeper实现远程调用框架-编程开发技术_第4页
使用rmizookeeper实现远程调用框架-编程开发技术_第5页
资源描述:

《使用rmizookeeper实现远程调用框架-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、使用RMI+ZooKccpcr实现远程调用框架-编程开发技术使用RMI+ZooKeeper实现远程调用框架原文出处:黄勇在Java世界里,有一种技术可以实现“跨虚拟机”的调用,它就是RMKRemoteMethodInvocation,远程方法调用)。例如,服务A在JVM1中运彳亍,服务B在JVM2中运行,服务A与服务B可相互进行远程调用,就像调用本地方法一样,这就是RMTo在分布式系统中,我们使用RMT技术可轻松将月艮务提供者(ServiceProvider)与服务消费者(ServiceConsumer)进行分离,充分体现组件Z间的弱耦合,

2、系统架构更易于扩展。木文先从通过一个最简单的RMI服务与调用示例,让读者快速掌握RMI的使用方法,然后指出RMT的局限性,最后笔者对此问题提供了一种简单的解决方案,即使用ZooKeeper轻松解决RMI调用过程中所涉及的问题。1发布RMI服务发布一个RMI服务,我们只需做三件事情:1.定义一个RMI接口2.编写RMI接口的实现类3.通过JNDI发布RMT服务1.1定义一个RMI接口RMI接口实际上还是一个普通的Java接口,只是RMI接口必须继承java.rmi.Remote,此外,每个RMT接口的方法必须声明抛出一个java.rmi.Re

3、moteException异常,就像卜面这样:packagecom.king,zkrmi;importjava.rmi.Remote;importjava.rmi.RemoteException;/***RMI服务接口*/publicinterfaceIlelloServiceextendsRemote{StringsayHello(Stringname)throwsRemoteException;继承了Remote接口,实际上是让JVM得知该接口是需要用于远程调用的,抛出了RemotcExccption是为了让调用RMI服务的程序捕获这个

4、异常。毕竟远程调用过程中,什么奇怪的事情都会发生(比如:断网)。需要说明的是,RemoteException是一个“受检异常”,在调用的时候必须使用try...catch...自行处理。1.2编写RMI接口的实现类实现以上的IlclloScrvicc是一件非常简单的事情,但需要注意的是,我们必须让实现类继承java.rmi.server.UnicastRemoteObject类,此外,必须提供一个构造器,并且构造器必须抛出java.rmi.RemoteException异常。我们既然使用JVM提供的这套RMI框架,那么就必须按照这个要求来实

5、现,否则是无法成功发布RMT服务的,一句话:我们得按规矩出牌!packagecom・king・zkrmi;importjava.rmi.RemoteException;importjava.rmi.server.UnicastRemoteObject;/***RMI服务实现*/publicclassHelloServiceTmplextendsUnicaslRemoteObjeclimplemenlsIlelloService{protectedHelloServicelmpl()throwsRemoteException{}©Overri

6、depublicStringsayHello(Stringname)throwsRemotcExccption{returnString・formst("Hello%s",name);}}为了满足RMI框架的要求,我们确实做了很多额外的工作(继承了UnicastRemoteObject类,抛出了RemotcExccption异常),但这些工作阻止不了我们发布RM1服务的决心!我们可以通过JVM提供的JND1(JavaNamingandDirectoryInterface,Java命名与目录接口)这个API轻松发布RMI服务。1.3通过JND

7、I发布RMI服务发布RMI服务,我们需要告诉JNDI三个基本信息"・域名或IP地址(host)、2.端口号(port)>3.服务名(service),它们构成了RMT协议的URL(或称为“RMI地址”):rmi://:/如果我们是在本地发布RM1服务,那么host就是“localhost”。此外,RMI默认的port是“1099”,我们也可以自行设置port的值(只要不与其它端口冲突即可)。service实际上是一个基于同一host与port下唯一的服务名,我们不妨使用Java完全类名來表示吧,这样

8、也比较容易保证RMT地址的唯一性。对于我们的示例而言,RMI地址为:rmi://localhost:1099/demo.zookeeper・rmi.server・HelloSer

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。