J2EE Architecture(19)
1、会话Bean
会话Bean有两种类型:无状态的会话Bean和有状态的会话Bean。
两者区别在于:在参与和维护与客户端的会话状态时,所用的方法和参与程度不同。
具体来说,有状态的会话Bean能为企业提供全面或局部的工作流及流程支持。
无状态会话Bean没有对话状态,这些Bean的实例相互等同。即可方便地使用池化概念重用此类实例。
有状态会话Bean能与客户端长期保持会话状态,在完成特定业务流程前,可在Bean和客户端之间执行若干次对话交换。
2、实体Bean
实体Bean是企业的持久数据组件,可表示各种信息,如所有经常账户持有者的银行账户明细、某个公司专用的保险单等。
实体Bean可能包含核心业务数据,这些关键数据用于满足企业功能需求。
实体Bean与企业数据相伴而生。即实体Bean直接指向数据库表中的特殊记录。
与会话Bean不同,实体Bean在容器活服务器崩溃时,能够生存下来。对企业而言,这是一个至关重要的特性。
在存储实体Bean的容器和服务器发生任何重大故障时,企业可以恢复这些实体Bean。
1)主键
它由“EJB对象”表示容器利用这个对象与实体Bean的特殊实例关联。
2)关系
企业处理大量持久数据,这些数据在本质上非常复杂。不同持久数据之间的关系归结为以下一些重要的类型:
(1)基数;
(2)方向;
(3)聚合、复合和级联删除
(4)递归、循环和钝化加载
(5)引用完整性
3)实体Bean和池化
实体Bean实例池
(1)BMP(Bean Managed Persistence,Bean管理的持久性)
(2)CMP(Container Managed Persistence,容器管理的持久性)
4)EJB查询语言——EJB-QL
EJB-QL为CMP实体Bean的finder和select方法定义了查询。
生成的EJB-QL的查询字符串通常包括SELECT、FROM、WHERE三个子句。
EJB-QL的设计基于SQL92规范。
3、服务
1)JDBC
2)JTS/JTA
3)JNDI
4)JMS
5)JavaMail API
6)JAF
7)J2EE连接器架构
8)JAAS
4、事务
“事务”指企业的逻辑工作单元,最终将更改持久数据,以满足所有数据参与者和相关方的要求。
事务的性质:原子性、一致性、隔离性、持久性。
1)企业使用4种事务模型:
(1)普通事务
大多数数据库和EJB都采用普通事务模型。
(2)嵌套事务
其原子工作单元嵌入到其它事务中。嵌套事务可表示成树状结构。
(3)链式事务
一组互连的原子工作单元,链在一起。
在该模型中,前一个提交事务的资源可用于下一事务。
(4)Sagas
类似于链式模型,也是将多个事务链在一起。如某个具体事务失败,将“补偿”该具体事务。
2)J2EE的事务参与者
在J2EE程序中,将有大量组件和容器参与事务。Web层的Servlet、Servlet Filter和JSP组件,业务层的会话Bean、实体Bean和MDB式事务流程的主要参与者。可统称为“事务应用程序”。
数据库通常是执行事务的终点。——称为“资源管理器”。
事务边界称为“事务分界线”。任何特殊事务都有两条分界线。第一条分界线标志事务开始,而第二条标志事务结束。开始是起始分界线标志,而提交活回滚是事务结束标志。
分布式事务本身十分复杂,因为事务发生在多个层并跨越网络。企业应用程序场景可使用多个事务资源,使问题更加复杂。为控制这种局面,事务管理器使用X/Open XA特殊协议,以交流信息,管理使用多个资源管理器的事务。参与企业分布事务的资源管理器互不知情,事务管理器可使用两阶段提交协议,以有效管理事务。J2EE为企业应用程序提供分布式、两阶段提交事务支持。
两阶段提交协议将事务过程分为两个阶段。在第一阶段,事务管理器所涉及的资源做好提交准备,接着等候资源管理器的响应。此时,任何资源管理器都可以向事务管理器发出明确的“不提交”要求。在第二阶段,如果一切正常,事务管理器将命令资源管理器提交;而如果发生任何意外,则命令资源管理器回滚。
3)JTS和JTA
JTS模型在CORBA OTS(Object Transaction Service,对象事务服务)的基础上建立,可确保移植性和可交互性。JTA指定用来定义和控制分布式事务的接口。
在JTA设计中,资源管理器、容器以及应用服务器使用这些API将事务作为“服务”提供给应用程序。
JTA包含以下三个重要接口:
(1)javax.transaction.TransactionManager接口由应用服务器实现,目的是提供事务管理器支持。此类服务能代替用户应用程序管理事务。
java教程,自学编程,青软培训