(第5讲)javabean、EJB区别

http://www.cnblogs.com/qianye/archive/2012/11/24/2786423.html

1、javabean是一种java语言编写的可重用组件。javabean的类必须是具体的和公开的,并且具有无参数构造器,javabean通过提供符合一致性设计模式(这和通常的设计模式不同,只是一种理念)的公共方法暴露内部域成员变量,通常是get/set方法

2、EJB是指运行在EJB容器中的javabean,Tomcat是web容器的参考实现。一个完整的JavaEE服务器应该包括WEb容器和EJB容器;WEB容器中无法运行EJB,同事所有的javabean都是在服务器运行的。如果在客户端的话,就会标称C/S结构了。目前来说除非需要分布式处理,不然那基本上不需要考虑EJB了。Spring能很好的处理分布计算之外的一切。用JavaScript来进行服务器调用的话,属于Ajax的范围了。
3、JavaBean的目的是为了将可以重复使用的软件代码打包标准。特别是用与帮助厂家开发在综合开发环境(IDE)下使用的java软件部件。这些包括如Grid控件,用户可以将该部件拖放到开发环境中。从此,JavaBean就可以扩展为一个java web 应用的标准部件,并且JavaBean部件框架已经扩展为企业版的 Bean(EJB)。  
 JavaBean 和 Server Bean(通常称为 Enterprise JavaBean (EJB))有一些基本相同之处。它们都是用一组特性创建,以执行其特定任务的对象或组件。它们还有从当前所驻留服务器上的容器获得其它特性的能力。这使得 bean 的行为根据特定任务和所在环境的不同而有所不同。
JavaBean 是使用 java.beans 包开发的,它是 Java 2 标准版的一部分。JavaBean 是一台机器上同一个地址空间中运行的组件。JavaBean 是进程内组件。Enterprise Bean 是使用 javax.ejb 包开发的,它是标准 JDK 的扩展,是 Java 2 Enterprise Edition 的一部分。Enterprise Bean 是在多台机器上跨几个地址空间运行的组件。因此 Enterprise Bean 是进程间组件。JavaBean 通常用作 GUI 窗口小部件,而 Enterprise Bean 则用作分布式商业对象.

| javabean                                                    | Enterprise JavaBean                                 |
|-----------------------------------------------------------------|----------------------------------------------------------------|
| 使用java.beans包开发                                 | 使用javax.ejb包开发                                  |
| beans包是java2标准的一部分                       | ejb包是标准JDK的扩展                             |
| 一台机器上同一个地址空间中运行的组件      | 在多台机器上跨几个地址空间运行的组件    |
| javabean是进程内组件                                 | ejb是进程间组件                                      |
| 通常用作GUI窗口小部件                              | 用作分布式商业对象                                 |

 

javabean存在与四种范围:页面(page),请求(request),对话(sessin),应用(application)。

对话范围:
对话范围的JavaBean 主要应用与跨多个页面和时间段: 例如填充用户信息。 添加信息并且接受回馈,保存用户最近执行页面的轨迹。对话范围JavaBean保留一些和用户对话 ID 相关的信息。这些信息来自临时的对话cookie,并在当用户关闭浏览器时,这个cookie将从客户端和服务器删除。
页面/请求范围:
页面和请求范围的JavaBean有时类似表单 的bean , 这是因为他们大都用于处理表单。表单需要很长的时间来处理用户的输入??外页面和请求范围的bean可以用于减少大型站点服务器上的负载,如果使用对话bean,耽搁的处理就可能会消耗掉很多资源。
应用:
应用范围通常应用于服务器的部件,例如 JDBC连接池、应用监视、用户计数和其他参与用户行为的类。

javaBean持久化是指以流的形式,用JavaBean的属性来保存bean,并在以后的某个时候或者在另一个虚拟机中再将它们读回来,和对象的序列化有点类似,然而它们有一个非常重要的区别,javabean持久化适合于长期存储。

当一个对象被序列化存储以后,如果类的实现发生了变化,则把对象重新读出来的时候就要在新旧数据表现之间进行转化。因此对象序列化仅适合于短期存储或者应用程序之间的RMI。

JavaBean的持久化可以考虑三种方式:数据库、XML文件、二进制流

第一种方式可以使用O/R Mapping技术将一个JavaBean映射到关系数据库中的表;
第二种方式可以使用JAVA1.4 的java.beans.XMLDecoder/java.beans.XMLEncoder将Bean映射到一个XML文件中;
第三种方式要求Bean实现Java的Serializable接口;


http://blog.sina.com.cn/s/blog_868000de0100xv60.html


两者是完全不同的
1、JavaBean是一个组件,而EJB就是一个组建框架
2、JavaBean面向的是业务逻辑和表示层的显示,通过编写一个JavaBean,可以将业务逻辑的事件和事务都放在其中,然后通过它的变量属性将所需要的内容在表示层传递显示。
EJB是部署在服务器上的可执行组建或商业对象。EJB有一个部署描述符,通过这个部署描述符可以对EJB的属性进行描述。EJB不和表示层交互。

3、通常,对于简单的服务器端应用来说,使用JavaBean是很不错的选择。虽然对于复杂的服务器端应用来说,使用JavaBean同样可以达到相同的效果,但这么做,所有底层的实现都必须手工来重新编写。而EJB不必用户关心它的底层操作,而只要关心它的外部实现即可。
的确,利用JavaBean来与EJB共同完成实现,是十分常见的。

4、从概念层上理解就是:
JavaBean是领域模型的具体化类,保存了信息和业务。只有set、get方法的JavaBean是失血模型。现在来说一般多少不太欢迎这种东西。把本属于领域对象的业务逻辑都丢掉了。
实际上现在的JavaEE系统分这么几个层。
表现层(Struts、JSF等)+应用层(处理业务,可以是JavaBean也可以是EJB)+持久层(JDBC、Hibernate)。
不要在Struts的Action类中写业务代码,那是反模式。不然日后需要修改的时候很麻烦的。Action中只有流程指向和对应用层的调用。

5、从服务其方面考虑就是:

JavaBean 和 Server Bean(通常称为 Enterprise JavaBean(EJB))有一些基本相同之处。它们都是用一组特性创建,以执行其特定任务的对象或组件。它们还有从当前所驻留服务器上的容器获得其它特性的能力。这使得bean 的行为根据特定任务和所在环境的不同而有所不同。

这开辟了巨大商机。因为 JavaBean 是与平台无关的,所以对于将来的解决方案,供应商可以轻易向不同用户推出其客户机方的JavaBean,而不必创建或维护不同的版本。

这些 JavaBean 可以与执行商业功能(例如订购、信用卡处理、电子汇款、存货分配、运输等)的 EJB配合使用。这里有巨大潜力,而这正是组件代理(WebSphereApplication Server企业版)设计提供的那种潜力。

JavaBean 是一种组件,它在内部有接口或有与其相关的属性,以便不同人在不同时间开发的 bean 可以询问和集成。可以构建一个bean,而在以后构造时将其与其它 bean 绑定。

这种过程提供了先构建,然后重复使用的方法,这就是组件的概念。可以将这种单一应用程序部署成独立程序、ActiveX组件或在浏览器中。

JavaBean 因其外部接口(即属性接口)而与纯对象不同。这种接口允许工具读取组件要执行的功能,将其与其它 bean挂钩,以及将其插入其它环境。

JavaBean 设计成对单一进程而言是本地的,它们在运行时通常可视。这种可视组件可能是按钮、列表框、图形或图表 -但这不是必需的。

可执行组件

Server Bean 或 EJB是部署在服务器上的可执行组件或商业对象。有一个协议允许对其进行远程访问或在特定服务器上安装或部署它们。有一系列机制允许它们将服务安全性、事务行为、并发性(由多个客户机同时访问的能力)和持久性(其状态可以保存多久)的主要方面授权给EJB 服务器上其所在的容器。

当安装在容器中时,它们获得各自的行为,该行为提供不同质量的服务,因此,选择正确的 EJB 服务器至关重要。这正是 IBMWebSphere 企业版的优势所在


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章