简述对RPC、RMI的理解。小编来告诉你更多相关信息。简述对RPC、RMI的理解本文为你介绍简述对RPC、RMI的理解的内容,具体详情如下:RPC:在本地调用远程的函数,远程过程调用,可以
简述对RPC、RMI的理解。小编来告诉你更多相关信息。
简述对RPC、RMI的理解
本文为你介绍简述对RPC、RMI的理解的内容,具体详情如下:
- RPC:在本地调用远程的函数,远程过程调用,可以跨语言实现 httpClient
- RMI:远程方法调用,Java中用于实现RPC的一种机制,RPC的Java版本,是J2EE的网络调用机制,跨 JVM调用对象的方法,面向对象的思维方式 直接或间接实现接口 java.rmi.Remote 成为存在于服务器端的远程对象,供客户端访问并提供一定的 服务 远程对象必须实现java.rmi.server.UniCastRemoteObject类,这样才能保证客户端访问获得远程对象 时,该远程对象将会把自身的一个拷贝以Socket的形式传输给客户端,此时客户端所获得的这个拷贝称 为“存根”,而服务器端本身已存在的远程对象则称之为“骨架”。其实此时的存根是客户端的一个代理, 用于与服务器端的通信,而骨架也可认为是服务器端的一个代理,用于接收客户端的请求之后调用远程 方法来响应客户端的请求。
代码如下:
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(); } }}
以上是网关于简述对RPC、RMI的理解的IT小经验,希望能为您在生活中带来帮助!
本站部分文章来自网络或用户投稿,如无特殊说明或标注,均为本站原创发布。涉及资源下载的,本站旨在共享仅供大家学习与参考,如您想商用请获取官网版权,如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。