IT袋

当前位置:主页 > 经验教程 > 建站编程 >

简述对RPC、RMI的理解

简述对RPC、RMI的理解

时间:2023-11-02 19:25:13 来源:IT袋 作者:马勇
导读:简述对RPC、RMI的理解,本文为你介绍简述对RPC、RMI的理解的内容,具体详情如下: RPC:在本地调用远程的函数,远程过程调用,可以跨语言实现 httpClient RMI:远程方法调用,Java中用于实现RPC的

简述对RPC、RMI的理解

本文为你介绍简述对RPC、RMI的理解的内容,具体详情如下:

  • RPC:在本地调用远程的函数,远程过程调用,可以跨语言实现 httpClient
  • RMI:远程方法调用,Java中用于实现RPC的一种机制,RPC的Java版本,是J2EE的网络调用机制,跨 JVM调用对象的方法,面向对象的思维方式 直接或间接实现接口 java.rmi.Remote 成为存在于服务器端的远程对象,供客户端访问并提供一定的 服务 远程对象必须实现java.rmi.server.UniCastRemoteObject类,这样才能保证客户端访问获得远程对象 时,该远程对象将会把自身的一个拷贝以Socket的形式传输给客户端,此时客户端所获得的这个拷贝称 为“存根”,而服务器端本身已存在的远程对象则称之为“骨架”。其实此时的存根是客户端的一个代理, 用于与服务器端的通信,而骨架也可认为是服务器端的一个代理,用于接收客户端的请求之后调用远程 方法来响应客户端的请求。

简述对RPC、RMI的理解

代码如下:

public interface IService extends Remote {
    String service(String content) throws RemoteException;
}
public class ServiceImpl extends UnicastRemoteObject implements IService {
    private String name;
    public ServiceImpl(String name) throws RemoteException {
        this.name = name;
    }
    @Override
    public String service(String content) {
        return "server >> " + content;
    }
}
public class Server {
    public static void main(String[] args) {
        try {
            IService service02 = new ServiceImpl("service02");
            Context namingContext = new InitialContext();
            namingContext.rebind("rmi://127.0.0.1/service02", service02);
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("000000!");
    }
}
public class Client {
    public static void main(String[] args) {
        String url = "rmi://127.0.0.1/";
        try {
            Context namingContext = new InitialContext();
            IService service02 = (IService) namingContext.lookup(url +
                    "service02");
            Class stubClass = service02.getClass();
            System.out.println(service02 + " is " + stubClass.getName());
//com.sun.proxy.$Proxy0
            Class[] interfaces = stubClass.getInterfaces();
            for (Class c : interfaces) {
                System.out.println("implement" + c.getName() + " interface");
            }
            System.out.println(service02.service("hello"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

以上是IT袋网网关于简述对RPC、RMI的理解的IT小经验,希望能为您在生活中带来帮助!

相关阅读

  • 如何创建数据库access Python建立Access数据库的基本方法

    如何创建数据库access Python建立Access数据库的基本方法

    今天小编介绍如何创建数据库access的介绍,接下来一起来看看吧。 创建Microsoft Access数据库通常可以使用Microsoft Access软件来完成。 但是,如果您想通过Python代码来创建Access数据库,可以使用

  • dhcp服务器的作用是什么怎么找

    dhcp服务器的作用是什么怎么找

    下面为网友们详细介绍dhcp服务器的作用是什么怎么找的知识内容,如有不对的地方欢迎指正! DHCP(动态主机配置协议,英文全称为Dynamic Host Configuration Protocol)是一种用于网络自动配置的协议

  • MySQL彻底卸载指南:步骤详解与注意事项

    MySQL彻底卸载指南:步骤详解与注意事项

    正文核心介绍:MySQL彻底卸载指南IT技巧方面的经验,下面来一起了解一下吧。 MySQL是一款非常流行的开源数据库管理系统,广泛应用于各类应用程序的数据管理。 然而,有时候你可能需要从你

  • 什么是TCP 有什么特点 三次握手原理详解

    什么是TCP 有什么特点 三次握手原理详解

    为大家说一说什么是TCP及有什么特点方面的内容,下面小编为您详细解答 天天都在谈的TCP三次握手,大家还知道它的原理吗?今天不念就带着大家了解一下,对这块不熟悉的童鞋,可以花费你