1课程实验报告课程名称java网络程序设计班级实验日期姓名学号实验成绩实验名称实验4RMI框架的应用实验目的及要求掌握使用RMI框架创建应用程序的步骤,验证RMI框架在远程对象方法调用中的作用。实验环境1.Windows72.eclipse实验内容使用java.rmi包中的类和接口分别创建基于RMI框架的远程接口、远程对象所属的类、服务器程序和客户程序,并运行客户及服务器程序,在程序运行过程中观察运行结果,验证RMI框架的作用。算法描述及(1)创建远程接口,继承java.rmi.Remote接口。(2)创建远程类,实现远程接口。(3)创建服务器程序,负责在rmiregistry注册表中注册远程对象。(4)创建客户程序,负责定位远程对象,并且调用远程对象的方法。(5)编译远程接口、远程类、客户端和服务器端程序,并生成相应的类文件。(9)分别启动注册表、服务端程序及客户端程序,观察并分析程序2实验步骤运行结果。调试过程及实验结果调试:结果如下:总结通过这次实验我们了解了RMI框架,虽然实现的只是一个功能相对比较简单的程序,但是期间受益匪浅,考察了这一个学期的学习成果,检验了综合运用所学知识点的能力,尝试将书本的理论知识运用到实践中。附SimpleServer.javapackagehello;3录importjava.rmi.*;importjavax.naming.*;publicclassSimpleServer{publicstaticvoidmain(Stringargs[]){try{HelloServiceservice1=newHelloServiceImpl(service1);HelloServiceservice2=newHelloServiceImpl(service2);ContextnamingContext=newInitialContext();//namingContext.rebind(rmi:HelloService1,service1);//namingContext.rebind(rmi:HelloService2,service2);namingContext.rebind(rmi://localhost:1099/HelloService1,service1);namingContext.rebind(rmi://localhost:1099/HelloService1,service2);System.out.println(服务器注册了两个HelloService对象);}catch(Exceptione){e.printStackTrace();}}}SimpleClient.javapackagehello;importjava.rmi.*;importjavax.naming.*;publicclassSimpleClient{publicstaticvoidshowRemoteObjects(ContextnamingContext)throwsException{NamingEnumerationNameClassPaire=namingContext.list(rmi:);4while(e.hasMore())System.out.println(e.next().getName());}publicstaticvoidmain(Stringargs[]){Stringurl=rmi://localhost:1099/;try{//System.setProperty(java.security.policy,SimpleClient.class.getResource(client.policy).toString());//System.setSecurityManager(newRMISecurityManager());ContextnamingContext=newInitialContext();HelloServiceservice1=(HelloService)namingContext.lookup(url+HelloService1);HelloServiceservice2=(HelloService)namingContext.lookup(url+HelloService2);ClassstubClass=service1.getClass();System.out.println(service1是+stubClass.getName()+的实例);Class[]interfaces=stubClass.getInterfaces();for(inti=0;iinterfaces.length;i++)System.out.println(存根类实现了+interfaces[i].getName());System.out.println(service1.echo(hello));System.out.println(service1.getTime());System.out.println(service2.echo(hello));System.out.println(service2.getTime());showRemoteObjects(namingContext);}catch(Exceptione){e.printStackTrace();}}}