美文网首页
远程部署的RMI

远程部署的RMI

作者: 范小白Van | 来源:发表于2018-05-08 10:57 被阅读56次

RMI

Java的远程程序调用(Remote Method Invocation,RMI)技术

对方法的直接调用,要求两个对象都在同一个堆上

远程过程调用的设计

需要创建出4个东西:客户端、客户端辅助设施、服务端、服务端辅助设施

客户端从客户端辅助设施中获取服务,就好像在本机调用服务一样,但事实上客户端辅助设施只是服务的代理,它将服务器辅助设施打包好传来的服务进行处理,再交给客户端。

  • 调用方法的过程

    1. 客户端对象向辅助设施对象调用doBigThing();

    2. 辅助设施对象将调用信息打包发给服务器的辅助设施对象;

    3. 服务器的辅助设施对象打开调用信息,并以此调用真正的服务。

使用RMI时,必要决定协议,有两种:JRMP 和 IIOP

JRMP是RMI的原生协议,支持Java与Java之间的远程调用;

IIOP是为了CORBA(Common Object Request Broker Architecture)产生的,支持Java与其他类型的远程方法。

创建远程服务的步骤

//step 1 创建远程接口
/*继承java.rmi.Remote;
import java.rmi.*;

public interface MyRemote extends Remote {
    //声明所有方法都会抛出RemoteException
    //远程方法的确定参数和返回类型都是primitive主要数据类型或Serializable
    public String sayHello() throws RemoteException;
    
}

//step 2 实现远程接口
//继承UnicastRemoteObject 获得远程相关功能;UnicastRemoteObject 的构造函数会抛出
//RemoteException 异常,因此继承它的子类,其构造函数也会抛出异常
public class MyRomoteImpl extends UnicastRemoteObject implements MyRomote {
    public String sayHello() {
        return "Server says, 'Hey'";
    }
    public MyRemoteImpl() throws RemoteException {};

    public static void main(String[] args) {
        //向 RMI registry 注册服务
        try {
            MyRemote service=new MyRemoteImpl();
            Naming.rebing("Remote Hello", service);
        } catch(Exception ex) {...}
    }
}
//客户端程序代码
import java.rmi.*;  // Naming类在此

public class MyRemoteClient {
    public static void main(String[] args) {
        new MyRemoteClient().go();
    }

    public void go() {
        try {
            MyRemote service=(MyRemote) Naming.lookup("rmi://127.0.0.1/Remote Hello");
            String s=service.sayHello();
            System.out.println(s);
        } catch(Exception ex) {
            ex.printStackTrace();
        }
    }
}

Servlet

servlet是Web服务器上的Java程序,它不是Java的标准函数库的一部分,需要另行添加

相关内容有Enterprise JavaBeans(EJB),Jini

Jini具有:

  • adaptive discovery (自适应探索)

    Jini查询服务要求网络上的服务注册,并发送序列化对象给查询服务

  • self-healing network (自恢复网络)

    当某个Jini服务要求注册,查询服务会返回一份租约,新注册的服务需要定期更新服务否则查询服务会认为该服务离线

相关文章

  • 远程部署的RMI

    RMI Java的远程程序调用(Remote Method Invocation,RMI)技术 对方法的直接调用,...

  • spring05-RMI---G05

    spring05-RMI 一. 远程方法调用 RMI Java RMI 指的是远程方法调用 (Remote Met...

  • Java RMI服务搭建

    什么是RMI? RMI:远程方法调用(Remote Method Invocation)。 如何建立RMI服务? ...

  • 关于RPC

    1.RMI RMI(Remote Method Invocation,远程方法调用),RMI使用Java语言接口定...

  • 分布式架构基础:Java RMI详解

    RMI简介 ​ Java RMI,即 远程方法调用(Remote Method Invocation),...

  • 【程序员笔记】RMI使用笔记

    本文章共分为三部分 RMI简介 RMI原理 RMI使用 RMI实战 下面详细介绍 一 RMI简介 远程方法调用(R...

  • JAVA RMI深度结论

    JAVA RMI是什么? Java RMI 指的是远程方法调用 (Remote Method Invocation...

  • Java RMI之HelloWorld篇

    Java RMI之HelloWorld篇 Java RMI 指的是远程方法调用 (Remote Method In...

  • Metasploit实战:Java RMI漏洞利用

    本章介绍反序化远程命令执行漏洞利用,JAVA RMI即序列化远程调用的一种。 Java rmi介绍 Java RM...

  • Spring整合RMI

    经常使用Java的一定知道RMI,当需要远程调用服务的是否,Java内嵌的RMI是非常有用的。但是创建调用RMI的...

网友评论

      本文标题:远程部署的RMI

      本文链接:https://www.haomeiwen.com/subject/jgyirftx.html