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组件的配置信息。
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组件的配置信息。