3.
java bean与ejb的区别 
EJB的体系结构:  EJB的上层的分布式应用程序是基于对象组件模型的,低层的事务服务用了API技术。EJB技术简化了用JAVA语言编写的企业应用系统的开发,配置,和执行。EJB的 体系结构的规范由Sun Microsystems公司制定。Inprise的EJB容器是基于1.1版的规范。  EJB技术定义了一组可重用的组件:Enterprise Beans。你可以利用这些组件,象搭积木一样的建立你的分布式应用程序。当你把代码写好之后,这些组件就被组合到特定的文件中去。每个文件有一个或多个Enterpr ise Beans,在加上一些配置参数。最后,这些Enterprise Beans被配置到一个装了EJB容器的平台上。客户能够通过这些Beans的home接口,定位到某个beans,并产生这个beans的一个实例。这样,客户就能够 调用Beans的应用方法和远程接口。  EJB服务器作为容器和低层平台的桥梁管理着EJB容器和函数。它向EJB容器提供了访问系统服务的能力。例如:数据库的管理和事务的管理,或者对于其它的Enterp rise的应用服务器。  所有的EJB 实例都运行在EJB容器中。容器提供了系统级的服务,控制了EJB的生命周期。因为容器掌握了绝大多数系统级的issues(呵呵,不知道怎么翻译)。Enterpri se Beans 的开发者不需要应用逻辑考虑进来。通常来说,EJB容器掌握了以下的系统级issues.  1、Security--配置描述器(The Deployment descriptor)定义了客户能够访问的不同的应用函数。容器通过只允许授权的客户访问这些函数来达到这个效果。  2、Remote Connectivity--容器为远程链接管理着低层的通信issues,而且对Enterprise Beas的开发者和客户都隐藏了通信issues.Enterprise Beans的开发者在编写应用方法的时候,就象是在条用本地的平台一样的。客户也不清楚他们调用的方法可能是在远程被处理的。  3、Life Cycle managment--客户简单的创建一个Enterprise beans的实例,并通常取消一个实例。而容器管理着Enterprise Beans的实例,使Enterprise Beans实现最大的效能和内存利用率。容器能够这样来激活和去活Enterprise Beans,保持众多客户共享的实例池。等等。  4、Trasction management—配置描述器定义了Enterprise beans 的事务处理的需求。容器管理着那些管理分布式事务处理的复杂的issues。这些事务可能要在不同的平台之间更新数据库。容器使这些事务之间互相独立,互不干扰。保证所 有的更新数据库都是成功发生的,否者,就回滚到事务处理之前的状态。Enterprise Beans 组件:Enterprise Beans 是基于分布式事务处理的企业级应用程序的组件。所有的Enterprise beans都有如下的特点:Enterprise beans包含了处理企业数据的应用逻辑。 
Enterprise beans provider定义了Enterprise beans的客户界面(Enterprise beans 的远程界面)。这样的界面不受容器和服务器的影响。于是,当一个Enterprise beans被集合到一个应用程序中去时,不用更改代码和重新编译。 
Enterprise beans能够被定制 
各种系统级的服务,例如安全和事务处理的特性,都不是属于Enterprise beans class的。而是由配置和组装应用程序的工具来实现。 
有两种类型的Enterprise beans: Session beans 和 entity beans.Session beans:  Session beans 是一种作为单个的client执行的对象。作为对远程的任务请求的相应,容器产生一个Session beans 的实例。一个Session beans有一个client.从某种程度上来说,一个Session bean 对于服务器来说就代表了它的那个client.Session beans 也能用于事务,它能够更新共享的数据,但它不直接描绘这些共享的数据。  Session beans 的生命周期是相对较短的。典型的是,只有当client保持会话的时候,Session beans 才是活着的。一旦client退出了,Session beans 就不再与client相联系了。Session beans被看成是瞬时的,因为如果容器崩溃了,那么client必须重新建立一个新的Session对象来继续会话。  一个Session bean典型的声明了与client的互操作或者会话。也就是说,Session bean了在客户会话期间,通过方法的调用,掌握Client的信息。一个具有状态的Session bean称为有状态的Session bean.当client终止与Session beans互操作的时候.会话终止了,而且,bean 也不再拥有状态值。  一个Session bean也可能是一个无状态的 session bean.无状态的Session beans并不掌握它的客户的信息或者状态。Client能够调用beans的方法来完成一些操作。但是,beans只是在方法调用的时候才知道client的参数变量 。当方法调用完成以后,beans并不继续保持这些参数变量。这样,所有的无状态的session beans的实例都是相同的,除非它正在方法调用期间。这样,无状态的Session beans就能够支持多个client.容器能够声明一个无状态的Session beans.能够将任何Session beans指定给任何client.Entity Beans:  Entity Beans对数据库中的数据提供了一种对象的视图。例如:一个Entity bean能够模拟数据库表中一行相关的数据。多个client能够共享访问同一个Entity bean.多个client也能够同时的访问同一个Entity bean.Entity beans通过事务的上下文来访问或更新下层的数据。这样,数据的完整性就能够被保证。  Entity Beans能存活相对教长的时间,并且状态是持续的。只要数据库中的数据存在,Entity beans就一直存活。而不是按照应用程序或者服务进程来说的。即使EJB容器崩溃了,Entity beans也是存活的。Entity Beans生命周期能够被容器或者 Beans自己管理。如果由容器控制着保证 Entity beans持续的issus。如果由Beans自己管理,就必须写Entity beans的代码,包括访问数据库的调用。  Entity Beans是由主键(primary key 一种唯一的对象标识符)标识的。通常,主键与标识数据库中的一块数据,例如一个表中的一行,的主键是相同的。主键是client能够定位特定的数据块。EJB roles:  EJB体系结构通过把编程的过程分为6个不同的角色而使开发复杂的的应用系统变的简单。6个不同的角色,每个都有特定的任务。6个角色包括下层的服务,应用程序的开发, 配置和操作说明(issues)  EJB体系结构能够简化应用程序开发人员的工作。在EJB体系结构中,容器和代理服务承担了很多在其他环境中又程序设计人员承担的工作。这样的代理提供了很多原来需要程 序设计人员编写代码的系统级的服务。。 

解决方案 »

  1.   

    Infrastructure roles;(下层构造角色)  EJB Server Providor服务提供者是典型的提供分布式低层服务的代理。EJB服务提供者提供了一个分布式应用程序开发者需要的平台和设施。也提供了分布式程序的运行时环境。< BR>
      EJB Container Providor 容器提供者是分布式系统,事务处理,安全方面的专家容器提供者提供了一个EJB的配置工具,和这些配置实例的运行时支持。  一个容器对一个或多个EJB来说,是一个运行时系统。它将Enterprise Beans和EJB服务,包括事务服务,安全服务,分布式网络管理等胶合在一起。容器是既是一个定制的代码和对特定的 Enterprise beans产生详细代码的工具。容器也提供了一个配置Enterprise beans的工具和管理监视应用程序的方法。
    Application roles:(应用角色)  Enterprise beans Provider:Beans提供者在应用领域方面是专家。例如:Beans提供者可能是金融或电信方面的专家。Beans提供者提供了业务tasks,Enterpr ise beans的业务方法,定义了beans的romote和home接口,还定义了beans的配置描述器。因为容器管理着系统级的任务,所以,Beans提供者便不需要 关心分布处理,事务处理,安全性能等从应用方面看来没什么关系的方面。Application Assembler程序组装器:  这是一个将定制的Enterprise beans和其它的组件,例如,GUI client,applet,Servelet等组装成一个完整的应用程序的行家。在Enterprise的配置器下,组装器在组装成一个应用程序的时候,只关心bea ns的接口,包括romote接口和home接口。而不关心这些接口是怎么实现的。组装的结果就是一个一个的应用程序,或者由多个Enterprise beans组合成的一个比较复杂的Enterprise beans.Deployment and Operate roles配置和操作角色  配置器为特定的Enterprise beans配置特殊的操作环境。配置器为了适应应用程序,将多个Enerprise beans 组合起来,通过修改Enterprise beans 的属性来达到配置相应的操作环境。例如,配置器通过设置配置描述符的相应的属性来设置事务和安全方针。配置器的另一个任务是将应用程序与现有的Enterprise管理 软件结合起来。System Administrator系统管理者;  是与配置应用有关的。管理者配置个管理Enterprise计算和网络服务的低层,包括EJB服务和容器。管理员监视着应用服务器的运行状况,当应用服务器不正常运行是 就采取相应的措施。典型的说,管理员使用Enterprise管理工具来与应用程序打交道,通过由容器提供的hooks来配置。  传统的应用程序开发者现在是Enterprise beans的提供者。也可能是应用程序的装配者。这样能使他们将主要精力放在应用问题或者应用逻辑上面。当安装Enterprise beans时,配置器定义了一系列的配置方针。机制的复杂性和执行配置的方针就交给了专门的代理。虽然分布式的应用程序还是比较复杂,可是,应用程序设计者的工作却变的 简单了,因为所有复杂的工作都交给了EJB服务器和容器提供者了。  通过大量的设计之前的定义和命名约定,EJB达到了前面提到的目的。这样的编程体系结构限制了一定的自由,但是,允许EJB服务器和容器提供者假定应用程序的设计,并以 一种行之有效的方式来支持他们。EJB的设计模式和命名约定:  有三种途径来建立一个基于对象的,多层的,分布式的系统:无状态服务的途径,基于会话的途径和持续对象的途径。  无状态的服务是通过对象的操作提供一种功能的函数,但是,不保持会话的状态。当一个客户使用无状态的对象时,客户不能够提供上一次操作的信息。  基于会话的设计产生了一个中间层的对象,称为一个会话(Session)。这个会话可以看成是这个客户的代理。典型的,会话的生命是由客户和所在的服务程序决定的。客户 如果完成了会话就可以将对象移走。如果服务终止了,会话对象就会超时。会话对象就会变的无效了。  持续对象设计模式绑定了存在数据库中的一块数据。提供了操作这块数据的一些个操作。持续对象是由多个客户共享的。起生命期是由存储数据的库所决定的。  EJB规范中将这些分别称做:stateless Session, stateful Session, Entiry Beans.Session Beans模式就是基于会话的设计模式。Entiry Beans模式就是持续对象设计模式。每种模式都定义了一些接口和命名约定。Enterprise JavaBeans infrastruct (EJB的基础结构)  容器和服务提供者实现了EJB的基础构造。这些基础构造处理了EJB的分布式方面,事务管理,安全性方面。EJB规范定义了基础构造和J ava API的为了适应各种情况的要求。而没有去指定用什么技术,平台,协议来实现他们。  Enterprise beans, container, server说明了EJB基础结构的要求,EJB基础结构必须提供客户和Enterprise beans通信的通道。虽然这不是EJB规范所定义的。但保证通道的安全也是很重要的。特别是当客户通过internet访问远程的Enterprise beans时。EJB基础结构也必须能够加强Enterprise beans 的访问控制。  Enterprise beans所有的数据的持续性必须被保证。EJB的低层结构必须提供在企业级的计算环境中与现存系统的结合能力。Beans的所有通信都是分布式事务的一部分,需要由E JB低层结构来管理对于一个成功的配置,EJB低层必须提供分布式应用管理工具的钩子(hooks)Container  容器可能是EJB里面最重要的概念。因为它向程序开发人员提供了最大程度的方便。基于对象的中间层软件平台如CORBA或者远过程调用RMI是程序开发者从网络传输中解 放出来,通过提供对象定位机制,数据重组机制等等。容器的概念则走的更远一点。通过简化分布式应用程序的那些复杂的方面,如:安全性,事务协调性,数据持久性。
    < BR>  一旦Enterprise Beans准备好了可以配置了。就被打包成一个标准的JAVA文件,ejb-jar文件。一个ejb-jar文件可以包括一个或多个的Enterprise Beans。对每一个Enterprise beans,都由它的接口,类,和配置描述器。Enterprise Beans Provider提供如下东西给ejb-jar 文件:Enterprise Beans 的remote 接口,接口说明了Client端能调用的函数。 Enterprise Beans 的home 接口,home接口使客户生成和定位一个Enterprise Beans的实例。 Enterprise 类本身,实现了Enterprise beans 的语义。 Deploy Descripot配置描述器,deployer通过利用配置描述器来提供没有在代码中申明的信息。例如方针和属性。EJB的1.0规范把配置描述器定义为javax. ejb.deployment. SessionDescriptor类或者javax.ejb.deployment.EntityDescriptor的一个实例,但是在1.1版本中不赞成这样做。 而是用XML来定义配置描述器。 
      配置一个Enterprise Beans 意味着将一个Enterprise Bean安装到容器中去。安装过程包括了如下几个方面:
    保证不同的Enterprise beans能够工作在一起。 用名字服务来注册一个Enterprise Bean 通过EJB服务的通信系统提供访问EJB的入口。 执行事务管理和安全方针。 
      在一个EJB容器中可以又任意多个Enterprise beans.除了安装和执行以外,容器也提供了配置Enterprise beans的工具。  为什么用Inprise的EJB 容器?  Inprise EJB容器提供的完全的服务
    完全支持EJB1。1规范。 一个有效的运行和管理EJBs的容器。 提供命名服务,事务服务,植入Java RDBMS的内部。编程,配置简单。 充分的例子来演示怎样使用EJBs和EJB容器。 
      对于Enterprise beans的开发者来说,EJB 容器是一个高级Enterprise类产品。因为它有如下优点:完整的,灵活的运行时环境:
    EJB容器完全实现了EJB1。1 的规范,包括了它的所有功能。 每一个由工具产生的Enterprise bean都同时是Enterprise bean 对象和CORBA对象。 EJB容器能够进行单独配置,100%的纯JAVA服务,或者作为完全的分布式的配置。这样的灵活性意味着你能够根据你的要求调整你的应用程序。 与其它的EJB服务不一样,Inprise 的EJB容器服务并没有限制一定要分开。而是任意个数的Enterprise beans可以放在任意个数的容器中,这些容器也可以放在任意个数机器上。并且支持分布式的事务协议,允许Enterprise beans的分别裁定。允许部分的配置你的应用,而将你的性能配置成最优化。 
    Inprise 的EJB是建立在Vbroker和RMI—IIOP之上的。
    EJB容器是建立在Inprise的Vbbroker之上的。VisBroker是 已经被证明的在各种条件下都是ORB的领导角色。无论在各大公司的联合测试下,或者在实际的应用环境中。VisiBroker提供了一个很好的的运行时的任务的完成。 为了更好的性能,Vbroker使用了大量的运行时优化,高级的多路链接,链接池和管理,线程池和管理。 客户和Enterprise beans,Enterprise benas之间,Enterprise beans 和其它的CORBA对象之间的通信都是通过用VisiBroker的IIOP方式进行的。VisiBroker完全适应CORBA2。3规范,RMI—IIOP通过值传 递的方式来实现。这意味着,复杂的JAVA数据类型能够用新的IDL值类型写到IIOP里面去。就象在CORBA2。3规范中一样。数据和服务之间相互协调怎样传送复杂的 数据类型是很重要的。否则,协同能力就会受到危及。EJB容器能够与其他的所有支持RMI-over-IIOP的进行协同工作。 安全特性是可由VisiBroker所有的。保证信用是从客户传象服务。 事务上下文也是由visibroker所有的。保证当CORBA客户开始一个事务时,并且访问EJB容器的服务时。事务上下文被传向服务,当服务需要调 用环境中的各项资源时,就要使用事务上下文。 事务的两段提交是由Inprise的ITS管理的。如果JDBC支持两阶段提交协议,EJB就支持两阶段提交协议。当时,如果JDBC不支持两阶段提交 ,两阶段提交就不能被完成。 
    Enterprise的EJB容器是一个CORBA对象:  Inprise 的java2iiop编译器和EJB容器一样,都是与CORBA兼容的。EJB容器能够理解RMI调用,但是,它用IDL来存放接口定义。虽然Java2iiop编译器 从java接口产生了st
      

  2.   

    可能没有在实际中用过,就很难能真正的理解EJB。
      

  3.   

    来晚了,
    EJB(Enterprise JavaBean )表示一个用来创建分布式,服务器端以及基于的java企业应用程序组件的功能强大的组件模型,
    利用这个模型来创建可移植与分布企业应用程序的服务器企业应用程序组件,
    开发者花费最小的精力就能使用由ejb容器/服务器所提供的分布式所提供的分布式通信使能服务,数据使能服务,通用分布试服务与 EJB 组件的系统保证服务