J2EE TM Blueprints Digest
作者:Monica Pawlan
翻译:环球联动开发组(Global Empower Inc. )
莫尼卡·宝兰
假如您已经安装了J2EE TM Platform (Enterprise Edition )软件,并通读
了各种可用的指南来帮助您学习使用该软件,那么,您可能已经预备
开始为J2EE 平台编写第一个多层企业应用程序了。在这个时候,您可
能对应用设计应当在何处着手、以及如何判定哪些J2EE API 最能满足
您的要求上存有迷惑 。
您可以得到帮助。《为企业版Java TM 2 平台设计企业应用程序》(Designing Enterprise
Applications for the Java TM 2 Platform, Enterprise Edition ISBN 0-201-70277-0 描述了J2EE 平
台,并提出了一个编程模型,可以帮助您在为J2EE 平台设计多层企业应用程序时作出最佳
决策。为了理论联系实际,第10 章举了一个电子商务宠物商店应用程序的例子,描述了该
编程模型是如何指导设计的。该书和该宠物商店应用程序一起被称作J2EE Blueprints (J2EE
蓝图)。
本文是J2EE 蓝图的一个摘要,向您介绍该编程模型,并帮助您把握它。您可以访问J2EE
下载页面,下载该书的PostScript 或者PDF 格式的版本,或者下载书中作为例子的宠物商店
应用程序。该书印刷本将在2000 年7 月上市 。
˙J2EE 基本架构:概述(J2EE Architecture —A Bird's-Eye View )
˙可再用应用组件(Reusable Application Components )
˙设计用户界面和引擎(Designing the User Interface and Engine )
˙设计基于Web 的应用(Designing Web-Based Applications )
˙Servlets 和jsp 页面(Servlets and JSP Pages )
˙模型、视图、控制器设计范式(Model, View, Controller Design Pattern )
˙J2EE 应用中的Enterprise Beans (Enterprise Beans in J2EE Applications )
˙宠物商店应用程序(Pet Store Application )
J2EE 基本架构:概述基本架构:概述基本架构:概述基本架构:概 述
电子商务和信息技术的快速发展及对它的需求给应用程序开发人员
带来了新的压力。必须以比以前更少的金钱、更少的资源来更快地设
计、建立和生产企业应用程序 。
为了降低成本,并加快企业应用程序的设计和开发,J2EE 平台提供了一个基于组件的方法,
来设计、开发、装配及部署企业应用程序。J2EE 平台提供了多层的分布式的应用模型、组
件再用、一致化的安全模型以及灵活的事务控制。您不仅可以比以前更快的速度向市场推出
创造性的客户解决方案,而且,您的平台独立的、基于组件的J2EE 解决方案不会被束缚在2
任何一个厂商的产品和API 上 。
J2EE 规范定义了以下种类的组件 :
˙应用的客户组件(Application client components )
˙Enterprise JavaBeans TM 组件(Enterprise JavaBeans TM components )
˙Servlets 及JavaServer Pages TM (JSP 页面)组件(也被称作Web 组件)(Servlets and
JavaServer PagesTM (JSP pages) components )
˙Applets
一个多层的分布式的应用模型意味着应用逻辑被根据功能而划分成组件,并且可以在同一个
服务器或不同的服务器上安装组成J2EE 应用的这些不同的组件。一个应用组件应被安装在
什么地方,取决于该应用组件属于该多层的J2EE 环境中的哪一层。这些层是客户层、Web
层 、 业务层及企业信息系统层(EIS )。
客户层(客户层(客户层(客户层(Client Tier )))
J2EE 应用可以是基于Web 的,也可以是不基于Web 的。在一个基于
Web 的J2EE 应用中,用户的浏览器在客户层中运行,并从一个Web
服务器上下载WEB 层中的静态Html 页面或由JSP 或servlets 生成的
动态HTML 页面 。
在一个不基于Web 的J2EE 应用程序中,一个独立客户程序,或者不运行在一个HTML 页
面中,而是运行在其它一些基于网络的系统(比如手持设备或汽车电话)中的applet 程序,
在客户层中运行,并在不经过Web 层的情况下访问enterprise beans 。该不基于Web 的客户
层可能也包括一个JavaBeans 类来治理用户输入,并将该输入发送到在企业层中运行的
enterprise bean 类来处理。根据J2EE 规范,JavaBeans 类不被视为组件 。
为J2EE 平台编写的JavaBeans 类有实例变量和用于访问实例变量中的数据的“get 和set 方
法”。以此种方式使用的JavaBeans 类在设计和实现上通常都是简单的,但是它们必须符合
JavaBeans 规范中列出的命名和设计约定。
Web 层层层层
J2EE Web 组件可以由JSP 页面、基于Web 的applets 以及显示HTML 页面的servlets 组成。
调用servlets 或者JSP 页面的HTML 页面在应用程序组装时与Web 组件打包在一起。就像
客户层一样,Web 层可能包括一个JavaBeans 类来治理用户输入,并将输入发送到在业务层
中运行的enterprise beans 类来处理 。
运行在客户层的Web 组件依靠容器来支持诸如客户请求和响应及enterprise bean 查询等。
业务层业务层业务层业务 层
作为解决或满足某个特定业务领域(比如银行、零售或金融业)的需要的逻辑的业务代码由
运行在业务层的enterprise beans 来执行。一个enterprise bean 从客户程序处接收数据,对数
据进行处理(假如需要),再将数据发送到企业信息系统层存储。一个enterprise bean 还从
存储中检索数据,并将数据送回客户程序 。3
运行在业务层的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 TM DataSource
对象,以及消息连接。
安全和事务治理(安全和事务治理(安全和事务治理(安全和事务治理(Security and Transaction Management )))
诸如安全和事务治理这样的应用行为可以在部署时在Web 和enterprise bean 组件上进行配
置。这个特征将应用逻辑从可能随装配而变化的配置设定中分开了 。
安全安全安全安 全
J2EE 安全模型答应配置一个Web 或enterprise bean 组件,使系统资源
只能由授权的用户访问。例如,一个Web 组件可以被配置成提示输入
用户名和密码。一个enterprise bean 组件可以被配置成只让特定团体
中的成员调用其某些方法。或者,一个servlet 组件可以被配置成让某
个组织中的所有人都能访问其某些方法,同时只让该组织中的某些享
有特权的人访问一些方法。同样是该servlet 组件,可以针对另外一个环境而被配置成让每
个人都能访问其所有方法,或者仅让选定的少数人访问其所有方法 。
事务治理(事务治理(事务治理(事务治理(Transaction Management )))
J2EE 事务模型使得能够在部署时定义构成一个单一事务的方法之间的关系,以使一个事务
中的所有方法被处理成一个单一的单元。这是我们所希望的,因为一个事务是一系列步骤,
这些步骤要么全部完成,要么全部取消。
例如,一个enterprise bean 可能有一组方法,使我们可以通过从第一个账户借出并存入第二
个账户的方式而将钱从第一个账户转