欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    java核心课件2-第9章.ppt

    • 资源ID:6509872       资源大小:235.49KB        全文页数:11页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    java核心课件2-第9章.ppt

    第9章 RMI,熟悉RMI的基本原理和结构能够熟练创建简单的RMI程序,9.2 RMI的本质,RMI(Remote Method Invocation)远程方法调用;它是Java特有的分布式计算技术,允许运行在一个Java虚拟机上的对象调用运行在另一个Java虚拟机上的对象的方法;用RMI实现的远程方法调用,看起来像调用本地方法一样。,9.3 RMI的体系结构,如下图,RMI框架采用代理,来负责客户与远程对象之间通过Socket进行通信的细节;RMI框架为远程对象分别生成了客户端代理和服务器端代理;位于客户端的代理称类为存根(Stub);位于服务器端的代理类称为骨架(Skeleton)。,当客户端调用远程对象的一个方法时,实际上是调用本地存根对象的相应方法。存根对象与远程对象具有同样的接口。存根采用一种与平台无关的编码方式,把方法的参数编码为字节序列,这个编码过程称为参数编组。RMI主要采用Java序列化机制进行参数编组。接着,存根把以下请求消息发送给服务器:被访问对象的名字、被调用的方法的描述、编组后的参数的字节序列;服务器端接收到客户端的请求信息,然后由相应的骨架对象来处理这一请求信息,骨架对象执行以下操作:反编组参数,即把参数俄字节序列反编码为参数;定位要访问的远程对象;调用远程对象的相应方法;获取方法调用产生的返回值或异常,然后对它们进行编组;把编组后的返回值或异常发送给客户端;客户端的存根接收到服务器发送过来的编组后的返回值或异常,再对它进行反编组,就得到调用远程方法的返回结果;存根与骨架类通过Socket进行通信;在JDK5.0中,RMI框架会在运行时自动为远程对象生成动态代理类(包括存根和骨架类),从而更彻底地封装了RMI框架的实现细节,简化了RMI框架的使用方式,9.4 RMI的命名服务,RMI采用一种命名服务机制来使客户程序可以找到服务器上的一个远程对象;在JDK的安装目录的bin子目录下有一个rmiregistry.exe程序,它是提供命名服务的注册表程序;服务器负责创建远程对象,然后把它注册到rmiregistry注册表,客户端从注册表中获得远程对象的存根对象;RMI的命名服务API已经被整合到Java命名与目录信息(JNDI)服务中了,以URL的形式给出;RMI的URL以rmi:/开头,后面接服务器以及端口号,然后是一个斜线,接着是远程对象的名字:rmi:/localhost/server1默认端口为1099。,9.5 一个简单的应用,大致来说,创建一个RMI应用包括以下步骤:创建远程接口:继承java.rmi.Remote接口;创建远程类:实现远程接口,其构造方法必须声明抛出RemoteExcetion异常;创建服务器程序:负责在rmiregistry注册表中注册远程对象;创建客户程序:负责定位远程对象,并且调用远程对象的方法。,9.5.1 创建远程接口,RMI规范要求远程对象所属的泪实现一个远程接口,并且远程接口符合以下条件:直接或间接继承java.rmi.Remote接口;接口中的所有方法声明抛出java.rmi.RemteException;方法和参数的返回值必须是可序列化的对象。例:public interface HelloService extends Remote String sayHello(String msg)throws RemoteException;,9.5.2 提供服务器端实现类(远程类),这个类通常继承自RemoteServer类,但它是一个抽象类,仅仅定义了服务器对象与其远程存根之间通信的基本机制;UnicastRemoteObject类继承了抽象类RemoteServer,是一个实体类,对一个远程类而言,最简单的就是继承它,它也是当前版本RMI包中提供的唯一可用的服务器端实现类。另外,远程类的构造方法必须声明抛出RemoteExcetion异常例:public class HelloServiceImpl extends UnicastRemoteObject implementsHelloService private String name;public HelloServiceImpl(String name)throws RemoteException this.name=name;public String sayHello(String msg)throws RemoteException return msg+from+name;,9.5.3 创建服务器类,这个类主要负责:创建远程对象;用Naming类中的rebind或bind方法对远程对象进行绑定。例:public class SimpleServer public static void main(String args)try HelloService service1=new HelloServiceImpl(service1);HelloService service2=new HelloServiceImpl(service2);Naming.rebind(rmi:/localhost/HelloService1,service1);Naming.rebind(rmi:/localhost/HelloService2,service2);System.out.println(服务器注册了两个HelloService对象);catch(RemoteException e)e.printStackTrace();catch(MalformedURLException e)e.printStackTrace();,9.5.4 创建客户端类,用Naming类中的lookup方法进行远程服务查找例:public class SimpleClient public static void main(String args)String url=rmi:/192.168.1.36/;try/获得远程对象的存根对象HelloService service1=(HelloService)Naming.lookup(url+HelloService1);HelloService service2=(HelloService)Naming.lookup(url+HelloService2);System.out.println(service1.sayHello(hello);System.out.println(service2.sayHello(hello);catch(NamingException e)e.printStackTrace();catch(RemoteException e)e.printStackTrace();catch(Exception e)e.printStackTrace();,现在我们建立了所有运行这个简单RMI系统所需的文件,在命令控制台下运行这个系统,必须开启三个控制台窗口,一个运行服务器,一个运行客户端,还有一个运行RMIRegistry。(1)首先运行注册程序RMIRegistry,必须在包含刚写的类的那么目录下运行这个注册程序。rmiregistry(2)运行服务器SimpleServer这个服务器就开始工作了,把接口的实现加载到内存等待客户端的联接。(3)启动客户端SimpleClient服务器端打印:服务器注册了两个HelloService对象客户端打印:hello from service1 hello from service2如果看到了上面的输出,证明已经成功的创建了一个RMI系统,并且使他正确工作了。即使运行在同一个计算机上,RMI还是使用了你的网络堆栈和TCP/IP去进行通讯,并且是运行在三个不同的Java虚拟机上。这已经是一个完整的RMI系统。,9.5.5 运行RMI系统,

    注意事项

    本文(java核心课件2-第9章.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开