J2EE基本架构:概述
业务层
作为解决或满足某个特定业务领域(比如银行、零售或金融业)的需求的逻辑的业务代码由运行在业务层的enterprise beans来执行。一个enterprise beans从客户程序处接收数据,对数据进行处理(如果需要),再将数据发送到企业信息系统层存储。一个enterprise bean还从存储中检索数据,并将数据送回客户程序。
运行在业务层的enterprise beans依赖于容器来为诸如事务、生命期、状态管理、多线程及资源存储池提供通常都非常复杂的系统级代码。
业务层经常被称作Enterprise JavaBeans(EJB)层。业务层和Web层一起构成了3层J2EE应用的中间层,而其他两层是客户层和企业信息系统层。
企业信息系统层
企业信息系统层运行企业信息系统软件,这层包括企业基础设施系统,例如企业资源计划(ERP)、大型机事务处理(mainframe transaction processing)、数据库系统及其他遗留信息系统(legacy information systems)。J2EE应用组件因为某种原因(例如访问数据库)可能需要访问企业信息系统。
注意:J2EE平台的未来版本将支持Connector架构,该架构是将J2EE平台连接到企业信息系统上的一个标准API。
查询服务(lookup services)
因为一个J2EE应用程序的组件是单独运行的,并且往往在不同的设备上运行,因此,需要一种能让客户层和Web层代码查询并引用其他代码和资源的方法。客户层和Web层代码使用Java命名和目录接口(JNDI)来查询用户定义的对象(例如enterprise beans)、环境条目(例如一个数据库驱动器的位置)、企业信息系统层中用于查找资源的JDBC DataSource对象,以及消息连接。
安全(Security)
J2EE安全模型允许配置一个Web或enterprise bean组件,使系统资源只能由授权的用户访问。例如,一个Web组件可以被配置成提示输入用户名和密码。一个enterprise bean组件可以被配置成只能让特定团体中的成员调用其某种方法。或者,一个servlet组件可以被配置成让某个组织中的所有人都能访问其某些方法,同时只让该组织中的某些享有特权的人访问另一些方法。同样是该servlet组件,可以针对另外一个环境而被配置成让每个人都能访问其所有方法,或者仅让选定的少数人访问其所有方法。
事务管理(Transaction Management)
J2EE事务模型使得能够在部署时定义构成一个单一事务的方法之间的关系,以使一个事物中的所有方法被处理成一个单一的单元。这是我们所希望的,因为一个事物是一系列步骤,这些步骤要么全部完成,要么全部取消。
例如,一个enterprise bean可能有一组方法,使我们可以通过从第一个帐户借出并存入第二个帐户的方式而将钱从第一个帐户转移到第二个帐户。我们希望全部的操作被作为一个单元对待,这样,如果在借出之后存入之前发生了故障,该借出操作被取消。
事务属性是在装配期间定义在一个组件上的。这使的能将来自多个应用组件的方法归到一个事务中,这说明,我们可以轻易变更一个J2EE应用程序中的应用组件,并重新指定事务属性,而不必改变代码或重新编译。
应当注意,JSP页面和servlets没有被设计成是事务的,它们通常将事务工作交给一个enterprise bean来完成。
诸如安全和事务管理这样的应用行为可以在部署时在Web和enterprise bean组件上进行配置。这个特征将应用逻辑从可能随装配而变化的配置设定中分开了。