偶然在网上看到了EJB和RMI的关系,和大家分享一下其中的奥秘
一、RMI
RMI是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。简单地说,这样使原先的程序在同一操作系统的方法调用,变成了不同操作系统之间程序的方法调用,由于J2EE是分布式程序平台,它以RMI机制实现程序组件在不同操作系统之间的通信。
从最基本的角度看,RMI是Java的远程过程调用(RPC)机制。与传统的RPC系统相比,RMI具有若干优点,因为它是Java面向对象方法的一部分。传统的RPC系统采用中性语言,所以是最普通的系统--它们不能提供所有可能的目标平台所具有的功能。
RMI以Java为核心,可与采用本机方法与现有系统相连接。这就是说,RMI可采用自然、直接和功能全面的方式为用户提供分布式计算技术,而这种技术可帮助您以不断递增和无缝的方式为整个系统添加Java功能。
面向对象的特点是RMI可将完整的对象作为参数和返回值进行传递,而不仅仅是预定义的数据类型。也就是说,您可以将类似Java哈希表这样的复杂类型作为一个参数进行传递。
RMI采用其分布式垃圾收集功能收集不再被网络中任何客户程序所引用的远程服务对象。与Java虚拟机内部的垃圾收集类似,分布式垃圾收集功能允许用户根据自己的需要定义服务器对象,并且明确这些对象在不再被客户机引用时会被删除。
二、EJB
EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。EJB (Enterprise JavaBean)是J2EE(javaEE)的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。
正是由于EJB是一种应用程序的标准,所以他对于一下特性进行特别的规定:
可扩展 (Scalable) 、分布式 (Distributed) 、事务处理(Transactional) 、数据存储(Persistent) 、安全性 (Secure)
详细的解释会在以后的博客中提到。
EJB规范组织一个重要的目标是减轻原始代码的数量,并且他们为此给出了一个完美而简洁的办法。在EJB3.0的里,任何类型的企业级 Bean只是一个加了适当注解的简单Java对象(POJO)。注解可以用于定义bean的业务接口、O/R映射信息、资源引用信息,效果与在 EJB2.1中定义部署描述符和接口是一样的。在EJB3.0中部署描述符不再是必须的了;home接口也没有了,你也不必实现业务接口(容器可以为你完成这些事情)。
比如,你可以使用@Stateless注解标记类把Java类声明为一个无状态会话bean。对于有状态会话bean来说,@Remove注释可以用来标记一个特定的方法,通过这个注解来说明在调用这个方法之后bean的实例将被清除掉。
三、BEAN
至于什么叫做Bean,其实很好理解JavaBean是Java中的一种可以重用的组件,和.net中的.com和.dll组件是一样的效果,但是他们却还有不同的地方,具体在JavaBean中的方法都必须是公共的方法,他不允许存在私有的方法,并且有的时候他是负责处理事务的有的时候又可以存放数据,在不同的地方他的作用是不同的,又因为他需要达到重用性,所以他里面的方法和属性都是公开的,私有的东西是不存在的。有的时候他还可以被当做实体类来使用,但是用的并不是很多。但是他在扩充原有程序的功能上的作用是没有别的东西可以替代的,所以我们在Java中修改程序也得益于此组件。
四、总结
学习了半天的J2EE关于里面的概念还只是理解的程度,远远没有达到活用的程度,所以以后对于J2EE的深入理解性的学习还要继续。