- 浏览: 240039 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 1453Usually we need to check the ta ... -
JMX Architecture & "Hello Word" the JMX way
2011-10-25 20:07 1813JMX Architecture Overview: JMX ... -
Jboss-eap-5.1 Messaging
2011-08-02 21:50 2472This section I will concertate ... -
Jboss-eap-5.1 starting up note
2011-07-26 22:46 2583Jboss enterprise platform 5 hav ... -
EJB Security & JAAS Demo
2011-05-21 19:39 1613PROLOGUE: When deploying ... -
JBoss LoginInitialContext Factory Implementation
2011-05-15 16:05 1533Jboss has a series of imp ... -
Jboss Reference Exception Gallery
2011-04-27 14:08 28901. Unable to locate a login con ... -
Hibernate Annotation 的一个问题,给点意见
2011-03-10 12:43 22问题:org.hibernate.annotations. ... -
大家说说BBC的网站用的是什么技术做的
2011-02-22 05:01 1437最近在英国出差,发现这里的一些网站做的相当有特色,有些网站不是 ... -
Hibernate OneToMany 单向和双向配置对数据存取性能的比较
2011-02-08 17:06 23161. 开篇说明:今天是春 ... -
对Hibernate属性(CascadeType、JoinColumn、JoinTable、ForeignKey等)的研究
2010-12-26 15:45 16671本文列出几个“EJB 学习阶段总结:JBoss下发布一个Toy ... -
EJB 学习阶段总结:JBoss下发布一个Toy企业应用
2010-12-25 12:11 2632解释题目:为什 ... -
EJB7: Message Driven Bean
2010-12-21 22:42 2147在企业系统中需要使用 ... -
EJB6: EntityBean例子
2010-11-26 14:48 1492本例子描述向EJB容器(JBoss)部署http: ... -
JPA dev: 几个问题总结(续)
2010-11-25 18:02 24732. 如何由PoJo类生成数据库中的表 首先可以根据实体间关 ... -
JPA dev: 几个问题总结
2010-11-25 16:56 3402最近工作中遇到几个与JPA相关的问题,本文通过一个例子总结一下 ... -
JAXB学习
2010-11-24 22:35 01 什么是JAXB? JAXB全称Java Ar ... -
EJB5: JPA扩展-J2SE环境下使用EntityManager
2010-11-10 19:07 2707好久没有写博客了,最近比较忙,今天抽时间写点,最近 ... -
EJB3: JBOSS 企业版、JBOSS服务器构架、EJB2.0 HelloWrold实例
2010-10-26 22:43 6472本文的研究基于jboss-eap- ... -
jboss-eap-4.3 启动停止在Configuring from URL: resource:jboss-log4j.xml 问题
2010-10-25 14:49 4052如题,我改用jboss-eap-4.3, 启动时停止在Conf ...
相关推荐
EJB中的会话bean(Session Beans)和实体bean(Entity Beans)可以通过RMI-IIOP接口暴露给客户端,从而实现分布式计算。 在"RMI-IIOP Java 源码实例.rar"中,你可能找到以下内容: 1. **源代码**:包含了实现RMI-...
这个压缩包“Java RMI-IIOP 相关源代码.rar”包含了相关的源代码示例,适合Java EJB(Enterprise JavaBeans)初学者进行学习和实践。 首先,Java RMI允许Java对象在不同的Java虚拟机之间进行远程调用,就像是本地...
学习这个源代码包,你可以了解到如何设置RMI-IIOP环境,如何创建和实现远程接口,以及如何在EJB中使用RMI-IIOP进行跨网络通信。同时,你还会接触到EJB的基本概念和部署过程,这对于理解企业级Java应用的架构和工作...
- **RMI-IIOP**:RMI-IIOP允许RMI与CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)协议进行互操作,扩大了RMI的适用范围。 - **EJB**:在J2EE体系中,EJB(Enterprise JavaBeans)...
4. **EJB与RMI-IIOP的关系**:比较EJB中的RMI-IIOP使用与普通Java RMI的区别,理解EJB如何提供更高级的服务和管理功能。 5. **测试与调试**:通过运行批处理命令,观察服务的启动和客户端调用过程,学习如何调试...
- RMI与EJB:RMI是EJB的基础,EJB提供更高级的企业服务,如事务管理、安全性等。 - RMI与Web服务:Web服务(如SOAP或REST)提供更广泛的互操作性,但通常比RMI复杂。 6. RMI的进阶应用 - RMI-IIOP:RMI可以与...
通过这三个实验项目的学习与实践,学生不仅掌握了EJB3.0、RMI/IIOP以及CORBA这些中间件技术的基础知识,还学会了如何利用这些技术开发实际的分布式计算系统。每个实验都围绕着查询特定班级的选课名单这一核心需求...
6. `java.rmi`: RMI-IIOP的相关API,RMI-IIOP结合了RMI和CORBA协议,用于EJB环境。 7. `java.rmi.CORBA`: 提供RMI-IIOP的轻量级API,以及与RMI-IIOP运行时的交互接口。 定位远程对象的过程通常涉及RMI的命名服务,...
《EJB-RMI入门》是一本专注于讲解Java企业级应用开发技术的书籍,特别是针对RMI(Remote Method Invocation,远程方法调用)的使用。...对于遇到的问题,可以参考《RMI-IIOP 和 JNDI 教程》等资源,以加深理解和应用。
- 使用RMI-IIOP(RMI over IIOP,即CORBA)可以跨平台通信,并支持更多的安全特性。 - 可以通过调整RMI的超时、重试策略等参数,优化远程调用的性能。 5. **应用领域**: - RMI常用于构建分布式应用,如数据库...
- **RMI-IIOP**:用于远程方法调用。 - **JNDI**:用于查找和定位命名的服务。 - **JDBC**:用于访问关系型数据库。 - **JTA/JTS**:用于事务管理。 - **JMS**:用于消息传递。 - **Servlet**:用于处理HTTP请求。 -...
总的来说,RMI是Java开发分布式应用程序的重要工具,它的概念和技术对于理解EJB和其他J2EE技术至关重要。通过实践这个RMI示例,你不仅能掌握RMI的基本用法,还能进一步提升在分布式系统开发中的技能。
- **远程接口**:RMI、RMI/IIOP等。 - **应用场景**:实现分布式应用程序间的通信。 #### 目标12:了解CORBA标准 - **技术背景**:Tuxedo、CORBA等中间件技术。 - **应用范围**:适用于企业级应用开发。 #### ...
6. `java.rmi`和`java.rmi.CORBA`:RMI-IIOP相关API,RMI-IIOP是RMI的一种扩展,它使用CORBA协议进行通信,常用于EJB环境。 定位远程对象的过程通常涉及使用RMI命名服务,如通过JNDI(Java Naming and Directory ...
Java Remote Method Invocation (RMI) 是Java平台提供的一种分布式计算技术,它允许在不同网络节点上的Java对象之间进行...同时,理解RMI的工作原理也有助于我们更好地设计和实现其他分布式技术,如EJB、Web服务等。
根据J2EE 1.3规范,EJB容器必须支持RMI-IIOP协议,这意味着无论是Java客户端还是非Java客户端都可以通过该协议访问EJB。具体而言,会话Bean和实体Bean可以通过RMI-IIOP协议实现同步通信。 ##### 2.2 RMI-IIOP与...