zoukankan      html  css  js  c++  java
  • 实现远程调用的方法

    方法(一):利用java.rmi.registry.LocateRegistry实现RMI调用

          1.创建远程接口

    远程接口中声明了可以被客户程序访问的远程方法。只要一个类继承了java.rmi.Remote接口,该对象才能成为远程对象,对象中指定的方法才能被远程调用。

     

    2.实现远程接口

     

    3.生成存根(Stub)

    这是运行前的截图:

     

    A.先javac编译文件

     

                B.然后生成存根

     

                C.将存根放到客户端里

     

    4.启动服务器程序

    先start rmiregistry(如果代码中没有自带的启动服务的部分),后Java HelloServer(在Server文件夹下)

     

    5.运行客户端程序

     

    方法(二):利用javx.naming.Context实现RMI调用

    1. 将服务器代码和客户端代码进行更改,改变成使用naming.Context类的新代码,并编译

     

    1. 然后分别运行客户端和服务器端

     

    签到系统实现

    运行截图:

    1.启动服务器

     

    2.启动客户端

    学生版:

     

    老师版:

     

    3.提交签到信息

    学生显示:

     

    老师显示:

     

    4.查看数据是否存储

     

    完成!

     javax.naming.Context 与java.rmi.registry.LocateRegistry的区别

    1. Naming类只是在“远程对象注册表”上进行存储和读取操作,该类并不能创建“远程对象注册表”;
    2. LocateRegistry类可以获取“远程对象注册表”引用,或者创建本地主机上的“远程对象注册表”;
    3. Naming类方法封装了Registry接口方法,只需要一个URL就能对“远程对象注册表”进行相关操作。
    4. LocateRegistry类获取到Registry对象引用后,通过Registry类方法对“远程对象注册表”进行相关操作

    错误总结:

    1.尝试了不生成存根就启动client,出现报错

          发现由于LocateRegistry 用于获取特定主机(包括本地主机)上的远程对象注册表的引用,或用于创建一个接受对特定端口调用的远程对象注册表。

          所以要从client本地获取存根,所以用rmic生成存根并转移到client文件夹中后,代码正确运行。

    2.rmic警告

    仔细阅读后发现只是建议不再使用,实际查看文件夹下已经生成了Stub文件,所以不存在硬性问题。

    3.1099端口占用问题

    在使用服务器端的时候,要运行“start rmiregistry”来启动JDK自带的注册表程序,它用于保存Server类注册的远程对象并允许远程客户端的请求访问。然后再运行服务器端的Server类,即“java Server”,该程序向注册表中注册具体的远程对象。

    但实际使用时出现了1099端口占用问题,打开了rmiregistry就无法启动服务器端,用netstat -ano,列出所有端口的情况后,发现rmiregistry本身占用了1099端口,再查看代码

    所以代码中已经包含启动的部分,改进后并不需要手动启动,所以就直接运行即可。

  • 相关阅读:
    Thrift全面介绍
    ZooKeeper全面介绍
    Redis全面介绍
    第三篇:彻底解决ssh.invoke_shell() 返回的中文问题
    第二篇:ssh.invoke_shell() 切换root出现的新问题
    第一篇:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 0: invalid continuation byte
    pycharm安装 suds模块报错:AttributeError: module 'pip' has no attribute 'main'
    变量赋值理解--Pyton中让两个值互换的方法
    02 Django框架基础(APP的创建访问)
    01 Web框架介绍
  • 原文地址:https://www.cnblogs.com/STK0210/p/10265577.html
Copyright © 2011-2022 走看看