Java-第8章 RMI开始_第1页
Java-第8章 RMI开始_第2页
Java-第8章 RMI开始_第3页
Java-第8章 RMI开始_第4页
Java-第8章 RMI开始_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 第八章第八章 从从RMIRMI开始开始目目 录录基于RMI应用程序的剖析使用RMI注册工作RMI与Socket的比较1.1.基于基于RMIRMI应用程序的剖析应用程序的剖析 在RMI中不使用协议,客户和服务器如何通信呢?服务器的服务信息,在远程接口中以方法签名的形式提供通过接口,服务器可以知道执行什么方法以及接收和传递什么数据远程接口定义服务器提供的方法,对客户是可见的客户可以通过查看远程接口,了解服务器所提供的方法客户通过RMI注册表获得远程接口的引用注册表是一个简单的名字服务1.1.基于基于RMIRMI应用程序的剖析应用程序的剖析 使用RMI创建分布式程序的步骤 定义一个远程接口 实现远

2、程接口和服务器 使用远程接口开发一个客户程序 产生桩和架构 启动RMI注册表1. 运行服务器和客户程序1.1.基于基于RMIRMI应用程序的剖析应用程序的剖析(1)定义远程接口远程接口定义说明了服务器所提供的方法的特性,包括名字、参数类型远程对象必须被声明为public远程接口扩展java.rmi.Remote.远程接口中的每个方法必须抛出RemoteException异常1.1.基于基于RMIRMI应用程序的剖析应用程序的剖析(1)定义远程接口 public interface Arith extends java.rmi.Remote int add(int a, int b) throw

3、s java.rmi.RemoteException;1. 1.1.基于基于RMIRMI应用程序的剖析应用程序的剖析(2) 实现远程接口通过编写一个类来执行前面定义的接口步骤:指定要执行的远程接口定义远程对象的成员器实现被远程调用的方法创建一个安全管理器,并安装它创建远程对象的一个或多个实例1.注册一个或多个远程对象到RMI注册表中1.1.基于基于RMIRMI应用程序的剖析应用程序的剖析(2) 实现远程接口public class ArithImpl extends UnicastRemoteObject implements Arith private String name; public

4、 ArithImpl(String s) throws RemoteException super();name = s; public int add(int a, int b) throws RemoteException int c = new int10;for (int i=0; i10; i+) ci = ai + bi; return c; 1. 1.1.基于基于RMIRMI应用程序的剖析应用程序的剖析(2) 实现远程接口public static void main(String argv) System.setSecurityManager(new RMISecurityMa

5、nager();try ArithImpl obj = new ArithImpl(ArithServer);Naming.rebind(“/localhost/ArithServer”, obj);System.out.println(ArithServer bound in registry);catch (Exception e) System.out.println(ArithImpl err: + e.getMessage();e.printStackTrace();1.1.基于基于RMIRMI应用程序的剖析应用程序的剖析(3)使用远程接口开发客户程序 public class Ar

6、ithApp public static String localHost() throws Exception InetAddress host = null;host = InetAddress.getLocalHost();System.out.println(host = +host.getHostName();return host.getHostName();1.1.基于基于RMIRMI应用程序的剖析应用程序的剖析(3)使用远程接口开发客户程序public static void main(String argv) int a = 1, 2, 3, 4, 5, 6, 7, 8, 9

7、, 9;int b = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2;int result = new int10;try Arith obj = (Arith)Naming.lookup(/hostname/ArithServer);result = obj.add(a, b); catch (Exception e) System.out.println(ArithApp exception:+e.getMessage();e.printStackTrace();System.out.println(The sum of the arrays is: );for (int j=

8、0; j10; j+) System.out.print(resultj+ );8.1.1.基于基于RMIRMI应用程序的剖析应用程序的剖析(4) 产生桩和架构所有代码编写完后,需要产生桩和架构桩和架构是在运行时确定,需要动态装载利用rmic编译器产生桩和架构rmic rmic ArithImpl1.1.基于基于RMIRMI应用程序的剖析应用程序的剖析(4)产生桩和架构1.1.基于基于RMIRMI应用程序的剖析应用程序的剖析(5)启动RMI注册表RMI注册表是一个名字服务器允许客户程序获得对远程对象的引用1.1.基于基于RMIRMI应用程序的剖析应用程序的剖析(5)启动RMI注册表RMI注册表

9、启动方法rmiregistry & 默认端口为1099rmiregistry 5555 & 指定端口start rmiregistry windows下的启动方法javaw rmiregistry如果注册表指定了端口号,那么绑定对象时就需要指定端口号1.1.基于基于RMIRMI应用程序的剖析应用程序的剖析(6)运行服务程序和客户程序2. 2. 使用使用RMIRMI注册表工作注册表工作(1)Registry包java.rmi.registry.Registryjava.rmi.registry.Registry bind()bind() list()list() lookup()lookup() rebind()rebind() unbind()unbind()java.rmi.registry. LocateRegistryjava.rmi.registry. LocateRegistry createRegistry()createRegistry() getRegistry()getRegistry()2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论