java中进行远程方法调用,能支持分布式计算。并且可以实现在server的修改,能反应到各个client。

假如server的ip是:192.168.11.2,

server端的代码如下:

/*** */
package com.vs.rmi;import java.rmi.Remote;
import java.rmi.RemoteException;public interface Product extends Remote {public String getDescription() throws RemoteException;
}
package com.vs.rmi;import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;public class ProductImpl extends UnicastRemoteObject implements Product {private String name;public ProductImpl() throws RemoteException{super();name = "my rmi";}@Overridepublic String getDescription() throws RemoteException {return "hello world, " + name;}
}
/*** */
package com.vs.rmi;import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;/*** @author hadoop* */
public class ProductServer {/*** @param args*/public static void main(String[] args) {/** 创建和安装一个安全管理器,令其支持 RMI. 作为 Java 开发包的一部分* * 适用于 RMI 唯一一个是 RMISecurityManager.* * * * if(System.getSecurityManager() == null) {* * System.setSecurityManager(new RMISecurityManager());* * }*/try {LocateRegistry.createRegistry(8808);ProductImpl server = new ProductImpl();Naming.rebind("//192.168.11.2:8808/SAMPLE-SERVER", server);System.out.println("远程对象注册成功, RMI 服务已经启动,等待客户端调用 ....");} catch (java.net.MalformedURLException me) {System.out.println("Malformed URL:" + me.toString());} catch (RemoteException re) {System.out.println("Remote exception:" + re.toString());}}}

Project接口必须打成jar包,在client的包中进行引入。

client端的代码如下:

package com.vs.myrmi;import java.rmi.*;import com.vs.rmi.Product;public class RmiSampleClient {public static void main(String[] args){try {String url = "//192.168.11.2:8808/SAMPLE-SERVER";Product product = (Product)Naming.lookup(url);System.out.println(product.getDescription());} catch (RemoteException exc) {System.out.println("Error in lookup: " + exc.toString());} catch (java.net.MalformedURLException exc) {System.out.println("Malformed URL: " + exc.toString());} catch (java.rmi.NotBoundException exc) {System.out.println("NotBound: " + exc.toString());}}
}

先执行server端进行监听,然后执行client端,client执行的结果如下:

hello world, my rmi

java1.6中,已经不需要手动使用rmic命令生成骨架。

转载于:https://www.cnblogs.com/xinyuyuanm/archive/2013/04/07/3003955.html

java中使用rmi进行远程方法调用相关推荐

  1. Java中String对象的replaceAll方法调用性能优化小技巧

    Java中String对象的replaceAll方法调用性能优化小技巧 0x01 Java中String对象的replaceAll方法调用性能优化小技巧 1.1 What? 1.2 Why? 1.3 ...

  2. java中构造代码块、方法调用顺序问题

    1. 继承的概念 继承在本职上是特殊--一般的关系,即常说的is-a关系.子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的一些属性或方法. 2. 继承中的初始化顺序 从类的结构上而言,其 ...

  3. RMI原理揭秘之远程方法调用

    接上:http://guojuanjun.blog.51cto.com/277646/1423392 这一次我们从学习RegistryImpl_Stub.java和RegistryImpl_Skel. ...

  4. Spring-整合JDBC-事务-远程方法调用RMI

    一.spring整合JDBC spring整合jdbc使用了模版方法设计模式 定义一套规范,固定流程不变,传入可变内容 1.Maven项目添加依赖 spring-context坐标依赖 mysql驱动 ...

  5. Java 中使用反射来创建对象、调用方法

    Java 中使用反射来创建对象.调用方法 反射创建对象 反射调用方法 反射调用私有方法 反射调用可变参私有方法 反射调用的方法自身可以抛出异常的情形   假设已有下面的类: import java.l ...

  6. java 跨类 调用 model_Model.java中的这两个方法,为什么不能在子类中调用,或者包内调用也行啊。...

    @JFinal 你好,想跟你请教个问题: Model.java中的这两个方法,为什么不能在子类中调用,或者包内调用也行啊. /** * Find model. */ @SuppressWarnings ...

  7. IDEA中报错:java: -source 1.5 中不支持静态接口方法调用

    用到java的一些新特性的时候,必须是在新的java版本中才能体现出来,否则会报错. 例如使用java8的Stream流或者lambadas特性,就会报如下错误: **Error:(11, 35) j ...

  8. XML-RPC远程方法调用

    一.简介 XML-RPC的全称是XML Remote Procedure Call,即XML远程方法调用. 它是一套允许运行在不同操作系统.不同环境的程序实现基于Internet过程调用的规范和一系列 ...

  9. Java中图形界面重绘方法

    ** Java中图形界面重绘方法 **   在我们编写图形界面程序的过程中,我们就会发现,当我们将窗体拉伸,缩小(或者最大化最小化)的时候,之前在窗体上画的图形会消失了. 这是为什么呢?   1)原来 ...

最新文章

  1. 技术雷达峰会2020:从技术趋势看行业挑战
  2. docker安装Tomcat
  3. SpringBoot Cache操作
  4. Syntax error, parameterized types are only available if source level is 1.5
  5. MySQL和PostgreSQL的常用语法差异
  6. python sql语句生成_python Django 生成sql语句
  7. Anaconda中软件库更新
  8. 中兴myos和鸿蒙,继华为鸿蒙系统以后!中兴再次发布新系统MyOS:可媲美苹果
  9. GitHub 引入缺陷和Pull Request 模版,并支持直接上传文件
  10. Excel解析的几种实现方式
  11. Q116:PBRT-V3场景描述文件.pbrt格式解析
  12. Webshell管理工具
  13. 物联网消息服务器,GitHub - tian-yuan/CMQ: go 实现的分布式开源物联网MQTT消息服务器...
  14. matlab计算可靠性过程,基于MATLAB的蒙特卡洛方法对可靠度的计算
  15. qlikview连接mysql_QlikView 通过ODBC 连接IBM DB2
  16. 同样取整,TRUNC函数与INT函数的有什么区别?
  17. The following packages have unmet dependencies错误
  18. 洞察市场需求,深耕大健康赛道,缤跃酒店打造一站式运动酒店品牌
  19. 关于Banner制作有感(antD+react)
  20. android adb 存储权限,android adb 权限修改

热门文章

  1. NeurIPS 2021 | CyGen:基于概率论理论的生成式建模新模式!
  2. 不得不赞!一个国内(可能)最好的海量CV数据集获取网站
  3. ResNet压缩20倍,Facebook提出新型无监督模型压缩量化方法
  4. AI医疗 | 新开源计算机视觉技术用于新生儿胎龄估计
  5. php点击按钮弹窗提示,WEB表单,给出弹出框提示,点击按钮报错
  6. 最新综述!深度神经网络视觉识别!共计329篇文献!西安交大、清华等合作出品!...
  7. 2018年90后薪资报告出炉:你在哪个级别???
  8. 提取voc数据集中特定的类
  9. 文本的表示-词嵌入(word embedding)
  10. 从零开始编写深度学习库(二)FullyconnecteLayer CPU编写