EJB是用于开发和部署多层结构

来源:互联网 发布:java加密与解密的艺术 编辑:程序博客网 时间:2024/06/05 05:02
1. EJB组件架构模型概述 
   Sun公司发布的文档中对EJB(EntERPrise Java Bean)的定义是:EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构件体系结构。采用EJB可以使开发商业应用系统变得容易,应用系统可以在一个支持EJB的环境中开发,开发完之后部署在其他的环境中,随着需求的改变,应用系统可以不加修改地迁移到其他功能更强、更复杂的服务器上。 
我们首先看一下EJB的组件构架模型:


A. EJB定义 
   Sun Microsystem EJB 2.0 Specification中定义如下(使用原文可能更有助于理解): 
   "The Enterprise JavaBeans architecture is a component architecture for the development and deployment of component-based distributed business applications. Applications written using the Enterprise JavaBeans architecture are scalable, transactional, and multi-user secure. These applications may be written once, and then deployed on any server platform that supports the Enterprise JavaBeans specification." 
   译文如下: 
   EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构件体系结构。使用EJB结构编写的应用程序具有可扩展性、交互性以及多用户安全特性。这些应用只需写一次,就可以发布到支持EJB规范的服务器平台上。 


A. EJB特点 
×定义了Java Server端的构件模型 
×Containers是一个EJB组件的执行环境 
×由EJB Container提供Server端的系统级功能 
线程管理, 交易管理, 状态管理, 资源共享 
×Client使用RMI/JNDI访问EJB 
×通过IIOP, EJB可以和CORBA Object互操作 
×支持厂商众多: 
IBM, BEA, Oracle, Sybase, Inprise... 


A. EJB规格制订的目的 
   从Enterprise, Java, Bean的名字组成的单词基本可以知道EJB的目的: 
   企业信息系统的企业逻辑是以Java代码开发的,该企业逻辑是位于服务器端的组件化标准模型,而通过其标准,该企业模型能布署在任一作业系统平台的应用软件系统下(只要是遵循EJB的规格)而具有事务处理能力、高度的安全性、稳定性、分散式网路的多层式架构的信息系统 


A. EJB开发的优势 
· 平台的独立性 
· 操作系统的独立 
· 中介软件层的独立 
· 数据库系统的独立 
· 缩短开发的时间 
· 节省IT部门的投资 
· 弹性、可重用性和轻便性 
· 广泛的工业支持 


B. EJB与JavaBeans 
   EJB和JavaBeans都是组件概念,名字中都有Java和Beans,那么他们有什么相同点和区别呢? 
   · 两者都是Java的组件模型 
   · JavaBeans重点是允许开发人员在开发工具中可视化的操纵组件 
   · EJB的侧重点是详细的定义了一个可以轻便地布署Java组件的服务框架模型 


C. EJB开发体系结构中的六个角色 
   EJB的开发中不久定义了具体的开发流程,还定义了具体的开发角色,不同的开发角色负责不同的开发任务。具体如下: 
· Enterprise Bean Provider 
EJB组件开发者负责编写EJB组件,EJB组件开发者是应用领域的专家。 
· Application Assembler 
应用组合者负责将各种EJB组合成一个完整的应用系统。 
· Deployer 
部署者负责将包含EJB组件的ejb-jar文件部署到应用服务器中。 
· EJB Server Provider 
EJB服务器提供者负责实现一些底层的系统服务,如交易管理等。EJB服务器提供者是系统领域的专家。 
· EJB Container Provider 
EJB容器提供者负责提供EJB组件的运行环境,EJB容器提供者和EJB服务器提供者一般是由相同的厂商担当,提供的产品叫应用服务器。 
· Persistence Manager Provider 
系统管理员负责为EJB服务器和容器提供一个企业级的计算和网络环境。 


2. EJB组件 


A. EJB组件的类型 
EJB组件有两种类型: 
   · Session Bean 
   Session Bean在J2EE Server上代表的是一个Client。Client通过调用Session Bean的方法来访问远程服务。Session Bean为它的Client完成特定的工作,并通过在server端运行business tasks,向Client屏蔽了实现的复杂性。 
   Session Beans有两种状态管理模式:Stateful和Stateless 
   Stateless Session Bean不能够维持一个调用客户的状态。在一个方法调用的过程中,Stateless Session Bean可以维持调用客户的状态,但是当方法执行完时,状态不会被保持。在调用完成后,Stateless Session Bean被立即释放到缓冲池中,所以Stateless Session Bean具有很好的伸缩性,可以支持大量用户的调用。 
   Stateful Session Bean可以一对一的维持某个调用客户的状态,并且在不同的方法调用中维持这个状态, 由于对于每一个并发用户,必须有一个对应的Stateful Session Bean,为了提高系统的效率,Stateful Session Bean可以在一定的客户空闲时间后被写入二级存储设备(如硬盘),在客户发出新的调用请求后,再从二级存储 设备恢复到内存中。 
   · Entity Bean 
   Entity Bean代表的是持续储存机制中的一个企业对象。它的持续可以被Entity Bean自己管理,也可以由EJB容器来管理。 
   Entity Bean代表数据库或另外一个企业应用系统中的数据对象,如代表数据库的一行记录。和Session Bean不同,Entity Bean是持久的(persistent),允许共享访问。持久性(Persistence)是指Entity Bean的状态不依赖于应用服务器而存在。因为Entity Bean是底层数据库记录的映像,会和数据库记录保持同步,所以,即使当应用服务器崩溃或停止运行,Entity Bean的状态还会保存在数据库中,不会丢失。     


A. EJB模型中的组件关系(图片已省略)


A. EJB的开发部署 
   开发一个EJB组件,EJB开发者必须提供以下四种文件: 
   · EJB Home Interface 
   定义了一些方法供EJB客户端create, remove和find EJB对象。 
   · EJB Remote Interface 
   定义了EJB的业务方法,EJB所有的业务方法必须在remote interface定义才能够被客户端访问。 
   · EJB class 
   实现在EJB Remote Interface中定义的业务方法。 
   · ejb-jar.XML 
   包含该EJB组件的配置信息。 
0 0