Java EE之RMI
开始学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相关推荐
- Java EE启示录
前言 最近的这段时间一直在学习Java EE,刚刚完成了从0到1的蜕变,所以顺便整理一下我所了解到的Java EE,给刚入门学习的新人一些头绪,而所谓"启示录",就是这个意思. 一 ...
- java ee面试题专家总结(必看),Java EE面试题专家总结(必看)
Java EE面试题 第一部分:Servlet/JSP快速入门 1. 请列举至少6种javaEE技术,并简述其作用. 解析: javaEE是一系列的技术,主要包扩13种.对于开发人员来说,了解几种主要 ...
- Java EE企业应用实战
前 言 目前Java EE应用的开发方式大致可分为两种:一种以Spring.Hibernate等开源框架为基础,这就是通常所说的轻量级Java EE应用:另一种则以EJB 3+JPA为基础,也就是本书 ...
- java ee是编程语言_什么是Java编程语言?
java ee是编程语言 什么是Java? (What is Java?) Java is an Object-Oriented Programming Language. It was first ...
- Spring 4 官方文档学习 Spring与Java EE技术的集成
本部分覆盖了以下内容: Chapter 28, Remoting and web services using Spring -- 使用Spring进行远程和web服务 Chapter 29, Ent ...
- JAVA EE是什么?
也许是这语言创造的太容易,编程语言竟然衍生出这么多的类别,就拿JAVA来说,JAVA EE.JAVA SE.Java Script就足以使人神魂颠倒了,今天我们先选一个在企业应用较广的JAVA EE来 ...
- Java EE结构理解 与Dao模式 no7.
什么是 JavaEE JavaEE 概念 Java EE,Java 平台企业版(Java Platform Enterprise Edition),之前称为Java 2 Platform, Enter ...
- Java EE架构师认证
SCEA Java EE架构师认证考试. 本考试由三部分组成: 1. 多选题测试. 2. 任务指派. 3. 对指派的任务进行陈述和测试.即简答部分. 第一章 什么是体 ...
- 从Java EE到Jakarta EE,企业版Java的发展历程
眼看他起高楼,眼看他宴宾客,眼看他楼塌了. 本文已被https://yourbatman.cn收录:程序员专用网盘https://wangpan.yourbatman.cn:公号后台回复"专 ...
最新文章
- OpenGL中的VAO和VBO使用技巧
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器出现no compatible source was found for this media问题的解决...
- 20150206--JS巩固与加强4-02
- 建立计算机科学系的学生视图,SQL语句练习及答案
- 永久关闭WPS热点,防止自启动
- VS绿豆沙屏幕保护色参数设置
- Warning: mysqli::mysqli(): (HY000/2002): No connection could be made because the target machine acti
- 计算机组成原理db和dw,汇编中的DW是什么意思那DB 它们什么作用
- NS3中“E: package ‘gnuplot‘ has no installation candidate”问题解决方案
- H5手机休闲游戏开发商有哪些?带你看遍北京游戏研发公司
- Tensorflow of python36 in win10
- [Android]混淆Android代码
- 《Xmind 用好思维导图走上开挂人生》记录
- GUVC-T10GD-L185 臭氧灯监控172nm和185nm紫外线灯监测高可靠性光电二极管杀菌灯监控
- DB2使用db2advis工具调优SQL
- discuz后台主导航栏菜单中添加新的菜单项的方法
- 进程调度算法-生产者消费者问题
- Tensorflow中部分API弃用(tf.sub/tf.mul/tf.neg)
- 纯css实现视频容器动态尺寸并且固定长宽比
- GHOST装机出现A:\GHOSTERR.TXT 问题分析和详解
热门文章
- python语言编程环境-day02--编程语言的分类与Python开发环境的搭建
- python开发安卓程序-python可以编写android程序吗?
- python语言能干什么-python语言能做什么
- python乘法口诀编程-中年大叔学编程-用Python打印个九九乘法表
- python是用c写的吗-python是用c写的吗
- python中文叫什么意思-python中文读什么
- python安装包-在Python中安装包的三种方法
- 大学python实训总结-【实训总结】大学生python相关实训总结
- 深圳python培训比较好的机构-深圳十大python培训机构排名
- 小学生学python-小学生就学编程,就学Python,真的那么重要吗?