开始学Java EE,为什么不从Servlet,JSP学起,而偏要选择一个在如今企业级开发中基本上不会直接用到的RMI,是因为大名鼎鼎而又臭名昭著但又不得不学的EJB建立在RMI基础之上。怀揣着李约瑟那句“如果我们不了解过去,也没多少希望掌握未来。”, 我开始盘根问底似的去学习Java EE的历史版本,于是我选择了EJB2,于是我选择了RMI。

  

  提到分布式计算,一开始有RPC,COBRA,Windows下的COM+。J2EE横空出世后,RMI也迅速加入了分布式大家庭中。

  RMI实现了这么一种应用场景:从一个JVM中的对象调用另一个JVM中的对象方法,是一种典型的C/S构架。首先将Server端的对象注册到rmiregistry中,Client找到该对象,然后调用该对象的方法。如果方法调用的参数也是对象,不管是传入的还是返回的,那么这样的对象需要序列化,即实现Serializable接口。

  在Server端首先需要定义一个远程接口,该接口需要继承Remote接口,以表明可以被远程调用。远程接口定义了向Client提供服务的方法,真正提供服务的对象需要实现这些方法。为了使Client端能够捕获到有可能发生的异常,Server端对象的每一个方法都应该抛出RemoteException异常。

  定义好Server端的服务接口和相应的对象后,通过rmic命令生成stub,stub运行在客户端,相当于Server端对象为Client端提供的代理,Client端在调用Server端的方法是通过stub完成的。

  接下来运行rmiregistry,注意此时的路径应该为Server端对象包名的顶层目录。如果你打算通过codebase的方式从Server端自动下载stub,那么运行rmiregistry时,stub便不应该放到classpath下,而应该通过java.rmi.server.codebase选项将stub加到codebase中,比如在启动Server时:

java -Djava.rmi.server.codebase=http://localhost:2001/  -Djava.secutiry.policy=securiy.policy Server

  Java提供了一个默认的codebase server,启动非常简单。

  在Server端绑定对象时可以通过两种方法,一种是通过Naming.bind的方式,另一种是通过JNDI的方式。

转载于:https://www.cnblogs.com/davenkin/archive/2013/02/08/javaee-rmi.html

Java EE之RMI相关推荐

  1. Java EE启示录

    前言 最近的这段时间一直在学习Java EE,刚刚完成了从0到1的蜕变,所以顺便整理一下我所了解到的Java EE,给刚入门学习的新人一些头绪,而所谓"启示录",就是这个意思. 一 ...

  2. java ee面试题专家总结(必看),Java EE面试题专家总结(必看)

    Java EE面试题 第一部分:Servlet/JSP快速入门 1. 请列举至少6种javaEE技术,并简述其作用. 解析: javaEE是一系列的技术,主要包扩13种.对于开发人员来说,了解几种主要 ...

  3. Java EE企业应用实战

    前 言 目前Java EE应用的开发方式大致可分为两种:一种以Spring.Hibernate等开源框架为基础,这就是通常所说的轻量级Java EE应用:另一种则以EJB 3+JPA为基础,也就是本书 ...

  4. java ee是编程语言_什么是Java编程语言?

    java ee是编程语言 什么是Java? (What is Java?) Java is an Object-Oriented Programming Language. It was first ...

  5. Spring 4 官方文档学习 Spring与Java EE技术的集成

    本部分覆盖了以下内容: Chapter 28, Remoting and web services using Spring -- 使用Spring进行远程和web服务 Chapter 29, Ent ...

  6. JAVA EE是什么?

    也许是这语言创造的太容易,编程语言竟然衍生出这么多的类别,就拿JAVA来说,JAVA EE.JAVA SE.Java Script就足以使人神魂颠倒了,今天我们先选一个在企业应用较广的JAVA EE来 ...

  7. Java EE结构理解 与Dao模式 no7.

    什么是 JavaEE JavaEE 概念 Java EE,Java 平台企业版(Java Platform Enterprise Edition),之前称为Java 2 Platform, Enter ...

  8. Java EE架构师认证

    SCEA  Java EE架构师认证考试. 本考试由三部分组成: 1.      多选题测试. 2.      任务指派. 3.      对指派的任务进行陈述和测试.即简答部分. 第一章  什么是体 ...

  9. 从Java EE到Jakarta EE,企业版Java的发展历程

    眼看他起高楼,眼看他宴宾客,眼看他楼塌了. 本文已被https://yourbatman.cn收录:程序员专用网盘https://wangpan.yourbatman.cn:公号后台回复"专 ...

最新文章

  1. OpenGL中的VAO和VBO使用技巧
  2. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器出现no compatible source was found for this media问题的解决...
  3. 20150206--JS巩固与加强4-02
  4. 建立计算机科学系的学生视图,SQL语句练习及答案
  5. 永久关闭WPS热点,防止自启动
  6. VS绿豆沙屏幕保护色参数设置
  7. Warning: mysqli::mysqli(): (HY000/2002): No connection could be made because the target machine acti
  8. 计算机组成原理db和dw,汇编中的DW是什么意思那DB 它们什么作用
  9. NS3中“E: package ‘gnuplot‘ has no installation candidate”问题解决方案
  10. H5手机休闲游戏开发商有哪些?带你看遍北京游戏研发公司
  11. Tensorflow of python36 in win10
  12. [Android]混淆Android代码
  13. 《Xmind 用好思维导图走上开挂人生》记录
  14. GUVC-T10GD-L185 臭氧灯监控172nm和185nm紫外线灯监测高可靠性光电二极管杀菌灯监控
  15. DB2使用db2advis工具调优SQL
  16. discuz后台主导航栏菜单中添加新的菜单项的方法
  17. 进程调度算法-生产者消费者问题
  18. Tensorflow中部分API弃用(tf.sub/tf.mul/tf.neg)
  19. 纯css实现视频容器动态尺寸并且固定长宽比
  20. GHOST装机出现A:\GHOSTERR.TXT 问题分析和详解

热门文章

  1. python语言编程环境-day02--编程语言的分类与Python开发环境的搭建
  2. python开发安卓程序-python可以编写android程序吗?
  3. python语言能干什么-python语言能做什么
  4. python乘法口诀编程-中年大叔学编程-用Python打印个九九乘法表
  5. python是用c写的吗-python是用c写的吗
  6. python中文叫什么意思-python中文读什么
  7. python安装包-在Python中安装包的三种方法
  8. 大学python实训总结-【实训总结】大学生python相关实训总结
  9. 深圳python培训比较好的机构-深圳十大python培训机构排名
  10. 小学生学python-小学生就学编程,就学Python,真的那么重要吗?