- 浏览: 236142 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
akka_li:
学习了!但是为什么后续的没有了?!
EJB4:RMI和RMI-IIOP -
springaop_springmvc:
apache lucene开源框架demo使用实例教程源代码下 ...
Lucene学习笔记(一)Lucene入门实例 -
qepipnu:
求solr 客户端 jar包
Solr学习笔记(三)Solr客户端开发实例 -
zhangbc:
是这问题,赞!
Oracle Start Up 2 Oracle 框架构件、启动、解决一个问题 -
feilian09:
查询 select hibernate jdbc 那个效率快
Hibernate,JDBC性能探讨
计划提纲:引入→RMI概念→RMI HelloWorld程序→RMI-IIOP→RMI-IIOP HelloWorld程序
Part One:引入
从一幅图开始:
上图说明的是client端程序访问远程服务器上EJB的详细流程,这里我主要要关注的是底层实现技术RMI-IIOP,同样
EJB3: JBOSS 企业版、JBOSS服务器构架、EJB2.0 HelloWrold实例
中第四部分开始也说明客户端与JBOSS EJB组件系统的交互中RMI-IIOP的重要性,所以研究EJB学习RMI-IIOP是非常有必要的,Java RMI-IIOP(java remote method invocation over the internet inter-ORB protocol),如果使用过RMI,就应该很清除RMI是Java执行远程方法调用的方式,而RMI-IIOP则是RMI的功能扩展版本,增加了如:分布式垃圾收集,对象活化,可下载类文件等,所以你可以把RMI理解成为RMI-IIOP的简化版本,在分布式对象方法调用上他们都完成了最基本的功能,综上,理解RMI-IIOP之前需要理解RMI,所以开始我们的Part two.
Part Two: RMI概念原理
RMI(Remote Method Invocation):JDK提供的一个完善的、简单易用的远程方法调运框架,它要求服务器端和客户端都是Java程序。这句话说明:
1 Java所特有的分布式计算技术
2 允许运行在一个Java虚拟机上的对象调用运行在另一个Java虚拟机上的对象的方法,从而使Java编程人员可以方便地在网络环境中作分布式计算
3 面向对象设计要求每个任务由最适合该任务的对象执行,RMI将这个概念更深入了一步,使任务可以在最适合该任务的机器上完成
区别两个概念来说明RMI
RMI | RPC | |
全名 | Remote Method Invocation | Remote Procedure Call Protocol |
速度 | 低速 | 高速 |
可靠性 | 可靠 | 不可靠 |
底层协议 | TCP/IP | UDP |
说明:其实这两个名词没有可比性,因为他们根本不是一类东西,RMI是Sun公司定义的一个Java分布式框架,包括一些Java接口等,而RPC是一个网络协议;
RMI框架的基本结构:
上图中:
1 Client 表示客户端java程序
2 Server 表示服务器端java程序
3 Stub就是代表远程对象的客户方代理,定义远程对象版本所支持的所有接口
4 Remote Referance表示远程引用层简称RRL
5 Skeletons是与服务器方代理,接受客户机方RRL的方法调用请求
6 底层是基于TCP/IP的协议
客户端调用远程服务器程序,先调用本地stub的方法,而本地stub将负责执行对远程对象的方法调用。在RMI中,远程对象的代理stub与该远程对象所实现的远程接口集相同,当你使用RMI来开发一个分布式应用时,需要遵守下面的步骤:
定义远程接口:一个远程接口定义了可以被客户端远程调用的方法。
实现远程对象:远程对象必须实现一个或多个远程接口。
注册远程对象:RMI采用的是命名和目录服务,所以远程对象注册后,客户端才可以访问
实现客户端:使用远程对象的客户可以在远程接口被定义后的任何时候实现。
Part Three: RMI HelloWorld 程序
1 创建远程接口,需要注意两点:实现java.rmi.Remote接口,接口中所有方法抛出java.rmi.RemoteException;
如下代码HelloService为远程接口
public interface Service { public String echo(String msg) throws RemoteException; public Date getTime() throws RemoteException; }
public interface HelloService extends Service, Remote { }
2 创建远程对象,同样注意两点:实现远程接口、继承java.rmi.server.UnicastRemoteObject类,如下HelloServiceImpl为远程对象
public class HelloServiceImpl extends UnicastRemoteObject implements HelloService { private String name; public HelloServiceImpl(String name) throws RemoteException { this.name = name; } public String echo(String msg) throws RemoteException { return "echo: " + msg + " from " + name; } public Date getTime() throws RemoteException { return new Date(); } }
3 注册远程对象,如下HelloServer注册了远程对象:
public class HelloServer { public static void main(String[] args) { try { HelloService helloWorld = new HelloServiceImpl("kylinsoong"); LocateRegistry.createRegistry(8888); Naming.bind("rmi://localhost:8888/helloWorld",helloWorld); } catch (RemoteException e) { e.printStackTrace(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (AlreadyBoundException e) { e.printStackTrace(); } } }
4 客户端程序,下面HelloClient程序:
public class HelloClient { public static void main(String[] args) { try { HelloService helloworld = (HelloService) Naming.lookup("rmi://localhost:8888/helloWorld"); System.out.println(helloworld.echo("kylin soong") + "\n" + helloworld.getTime()); } catch (MalformedURLException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } catch (NotBoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }
运行服务器端远程对象注册完成后,运行客户端代码可以出现如下结果;
echo: kylin soong from kylinsoong Tue Nov 02 21:22:46 CST 2010
Part Four: RMI-IIOP概念与原理
Part Five: RMI-IIOP HelloWorld 程序
发表评论
-
Oracle - Add Exist Validation Before Create Table
2011-11-07 13:49 1405Usually we need to check the ta ... -
JMX Architecture & "Hello Word" the JMX way
2011-10-25 20:07 1747JMX Architecture Overview: JMX ... -
Jboss-eap-5.1 Messaging
2011-08-02 21:50 2400This section I will concertate ... -
Jboss-eap-5.1 starting up note
2011-07-26 22:46 2544Jboss enterprise platform 5 hav ... -
EJB Security & JAAS Demo
2011-05-21 19:39 1576PROLOGUE: When deploying ... -
JBoss LoginInitialContext Factory Implementation
2011-05-15 16:05 1466Jboss has a series of imp ... -
Jboss Reference Exception Gallery
2011-04-27 14:08 28491. Unable to locate a login con ... -
Hibernate Annotation 的一个问题,给点意见
2011-03-10 12:43 22问题:org.hibernate.annotations. ... -
大家说说BBC的网站用的是什么技术做的
2011-02-22 05:01 1394最近在英国出差,发现这里的一些网站做的相当有特色,有些网站不是 ... -
Hibernate OneToMany 单向和双向配置对数据存取性能的比较
2011-02-08 17:06 22421. 开篇说明:今天是春 ... -
对Hibernate属性(CascadeType、JoinColumn、JoinTable、ForeignKey等)的研究
2010-12-26 15:45 16604本文列出几个“EJB 学习阶段总结:JBoss下发布一个Toy ... -
EJB 学习阶段总结:JBoss下发布一个Toy企业应用
2010-12-25 12:11 2549解释题目:为什 ... -
EJB7: Message Driven Bean
2010-12-21 22:42 2098在企业系统中需要使用 ... -
EJB6: EntityBean例子
2010-11-26 14:48 1441本例子描述向EJB容器(JBoss)部署http: ... -
JPA dev: 几个问题总结(续)
2010-11-25 18:02 24052. 如何由PoJo类生成数据库中的表 首先可以根据实体间关 ... -
JPA dev: 几个问题总结
2010-11-25 16:56 3350最近工作中遇到几个与JPA相关的问题,本文通过一个例子总结一下 ... -
JAXB学习
2010-11-24 22:35 01 什么是JAXB? JAXB全称Java Ar ... -
EJB5: JPA扩展-J2SE环境下使用EntityManager
2010-11-10 19:07 2641好久没有写博客了,最近比较忙,今天抽时间写点,最近 ... -
EJB3: JBOSS 企业版、JBOSS服务器构架、EJB2.0 HelloWrold实例
2010-10-26 22:43 6414本文的研究基于jboss-eap- ... -
jboss-eap-4.3 启动停止在Configuring from URL: resource:jboss-log4j.xml 问题
2010-10-25 14:49 4006如题,我改用jboss-eap-4.3, 启动时停止在Conf ...
相关推荐
可运行的RMI示例代码,RMI概念和其中的技术要点总结参见我的blog文章:"EJB第一枪:RMI and RMI-IIOP
RMI-IIOP Java 源码实例,附有BAT批处理命令,Java EJB初学者可参考学习,EJB的例子。
Java RMI-IIOP相关源代码,附有BAT批处理命令,Java EJB初学者可参考学习,EJB的例子。
分布式对象; 远程方法调用; CORBA; RMI-IIOP; 企业JavaBeans RMI技术研究及其在EJB中的应用
Java RMI-IIOP相关源代码,附有BAT批处理命令,Java EJB初学者可参考学习,EJB的例子。
RMI-IIOP Java 源码实例,附有BAT批处理命令,Java EJB初学者可参考学习
内容有:简单的EJB、无状态SessionBean、有状态SessionBean、BMP位图实例、cmp实例、Message-Driven Bean、JNDI的使用、112各种EJB之间的调用、B-S结构EJB、 C-S结构EJB、UML建模与J2EE开发、RMI and RMI-...
CORBA客户端访问EJB,EJB通过RMI--IIOP协议与corba兼容
Remote Method Invocation over the Internet-ORB Protocol(基于互联网的对象请求代理协议实现的远程方法调用) J2EE和EJB事实上的网络通信标准,基于RMI,同时又兼容CORBA,使得EJB组件可以被Java之外的客户端调用...
内容有:简单的EJB、无状态SessionBean、有状态SessionBean、BMP位图实例、cmp实例、Message-Driven Bean、JNDI的使用、112各种EJB之间的调用、B-S结构EJB、 C-S结构EJB、UML建模与J2EE开发、RMI and RMI-...
servlet JSP EJB JSF RMI-IIOP/java-IDL
RMI-IIOP通过CORBA平台和语言中立的通信协议发送RMI消息。 为了支持异步通信,J2EE 1.3规范还引入了一种新的EJB类型:消息驱动的Bean,即Message Driven Bean,简称MDB。如前所述,在JMS之前,J2EE原来是一个...
一、J2EE提出的背景 1、 企业级应用框架的需求 2、 为了通用必须要提出规范,不然无法达到通用 二、相关名词解释 ... RMI/IIOP: EAI: 三、J2EE的优越性 四、现状 ....... 常用架构以及详细主流框架技术讲解
共分3大部分20章,包括无状态会话Bean、有状态会话Bean、CMP实体Bean、EJB QL语言、集成RMI-IIOP与JNDI、应用客户端开发、EJB部署、持久化EJB与CORBA的集成等内容,均是目前的技术热点和读者所关注的问题。...
The J2EE platform manages the infrastructure and supports the Web services to enable development of secure, robust and interoperable business ... CORBA Integration (RMI/IIOP, IDL, EJB-CORBA Mapping
•RMI/ IIOP(远程过程调用/因特网ORB间协议):友情链接本地Java的RPC机制,CORBA,并允许非Java系统访问EJB。 •XML技术(JAXP,SAAJ,JAX-RPC等):一个完整的技术套件操纵XML和构建基于标准的XML Web服务。 •...
CORBA 237 14.1 CORBA的需求 237 14.2 CORBA的架构 237 14.2.1 IDL 239 14.2.2 ORB 240 14.2.3 IIOP 241 14.2.4 BOA 241 14.3 CORBA服务 241 14.4 创建CORBA应用 243 14.5 CORBA与RMI 246 14.5.1 CORBA和RMI的区别 ...