J2EE: 电子商务和信息技术的快速发展以及对它们的需求给应用程序开发人员带来了新的压力。必须以比以前更少的金钱、更少的资源来更快地设计、开发企业应用程序。为了降低成本,并加快企业应用程序的设计和开发, J2EE 平台提供了一个基于组件的方法,来设计、开发、装配及部署企业应用程序。J2EE 平台提供了多层的分布式的应用模型、组件再用、一致化的安全模型以及灵活的事务控制。您不仅可以用比以前更快的速度向市场推出创造性的客户解决方案,而且您的平台独立的、基于组件的J2EE 解决方案不会被束缚在任何一个厂商的产品和API 上。
1. J2EE 规范定义了以下种类的组件
• 应用客户组件。
• Enterprise JavaBeans 组件。
• Servlet及JavaServer Pages(JSP 页面)组件(也被称作Web 组件)。
• Applet。
一个多层的分布式的应用模型意味着应用逻辑被根据功能划分成组件,并且可以在同一个
服务器或不同的服务器上安装组成J2EE 应用的这些不同的组件。一个应用组件应被安装在什么
地方,取决于该应用组件属于该多层的J2EE 环境中的哪一层。这些层是客户层、We b层、业务
层及企业信息系统层( EIS )等。
(1) 客户层
J2EE 应用可以是基于Web 的,也可以是不基于Web 的。在一个基于Web 的J2EE 应用中,用户的浏览器在客户层中运行,并从一个We b服务器下载Web 层中的静态HTML 页面或由J S P或Servlet 生成的动态HTML 页面。在一个不基于Web 的J2EE 应用程序中,一个独立客户程序不运行在一个HTML 页面中,而是运行在其他一些基于网络的系统(比如手持设备或汽车电话)中,Applet 程序,在客户层中运行,并在不经过Web 层的情况下访问Enterprise Beans。这个不基于Web 的客户层可能也包括一个JavaBeans 类来管理用户输入,并将该输入发送到在企业层中运行的Enterprise Beans类来进行处理。根据J2EE 规范,JavaBeans 类不被视为组件。为J2EE 平台编写的JavaBeans 类有实例变量和用于访问实例变量中的数据的“ get 和set 方法”。以这种方式使用的JavaBeans 类在设计和实现上通常都是简单的,但是它们必须符合JavaBeans 规范中列出的命名和设计约定。
(2) Web 层
J2EE Web 组件可以由JSP 页面、基于Web 的A p p l e t以及显示HTML 页面的S e r v l e t组成。调用S e r v l e t或者JSP 页面的HTML 页面在应用程序组装时与Web 组件打包在一起。就像客户层一样,Web 层可能包括一个JavaBeans 类来管理用户输入,并将输入发送到在业务层中运行的Enterprise Beans 类来进行处理。运行在客户层的Web 组件依赖容器来支持诸如客户请求和响应及Enterprise Bean 查询等。
(3) 业务层
作为解决或满足某个特定业务领域(比如银行、零售或金融业)需要的逻辑的业务代码由运行在业务层的Enterprise Beans 来执行。一个Enterprise Bean 从客户程序处接收数据,对数据进行处理(如果需要),再将数据发送到企业信息系统层存储起来。一个Enterprise Beans 还从存储中检索数据,并将数据送回客户程序。运行在业务层的Enterprise Beans 依赖于容器来为诸如事务、生命期、状态管理、多线程及资源存储池等提供通常都非常复杂的系统级代码。业务层经常被称作Enterprise JavaBeans (EJB )层。业务层和Web 层一起构成了3 层J 2 E E应用的中间层,而其他两层是客户层和企业信息系统层。
(4) 企业信息系统层
企业信息系统层运行企业信息系统软件,这层包括企业基础设施系统,例如企业资源计划(E R P)、大型机事务处理( mainframe transactionprocessing )、数据库系统及其他遗留信息系统(legacy informationsystems )。J2EE 应用组件因为某种原因( 例如访问数据库) 可能需要访问企业信息系统。J2EE 平台的未来版本将支持Connector 架构,该架构是将J2EE 平台连接到企业信息系统上的一个标准A P I。
(5) 查询服务
因为一个J2EE 应用程序的组件是单独运行的,并且往往在不同的设备上运行,因此,需要一种能让客户层和Web 层代码查询并引用其他代码和资源的方法。客户层和Web 层代码使用Java 命名和目录接口(JNDI )来查询用户定义的对象(例如Enterprise Beans )、环境条目(例如一个数据库驱动器的位置)、企业信息系统层中用于查找资源的JDBC DataSource对象,以及消息连接。
(6) 安全和事务管理
诸如安全和事务管理这样的应用行为可以在部署时在Web 和Enterprise Beans 组件上进行配置。这个特征将应用逻辑从可能随装配而变化的配置设定中分开了。J2EE 安全模型允许配置一个Web 或Enterprise Beans 组件,使系统资源只能由授权的用户访问。例如,一个Web 组件可以被配置成提示输入用户名和密码。一个Enterprise Beans 组件可以被配置成只让特定团体中的成员调用其某些方法。或者,一个Servlet 组件可以被配置成让某个组织中的所有人都能访问其某些方法,同时只让该组织中的某些享有特权的人访问其中一些方法。同样是该Servlet 组件,可以针对另外一个环境而被配置成让每个人都能访问其所有方法,或者仅让选定的少数人访问其所有方法。
J2EE 事务模型使得能够在部署时定义构成一个单一事务的方法之间的关系,以使一个事务中的所有方法被处理成一个单一的单元。这是我们所希望的,因为一个事务是一系列步骤,这些步骤要么全部完成,要么全部取消。例如,一个Enterprise Beans 可能有一组方法,使我们可以通过从第一个账户借出并存入第二个账户的方式而将钱从第一个账户转移到第二个账户。我们希望全部的操作被作为一个单元对待,这样,如果在借出之后存入之前发生了故障,该借出操作被取消。事务属性是在装配期间定义在一个组件上的。这使得能将来自多个应用组件的方法归到一个事务中,这说明,我们可以轻易变更一个J2EE 应用程序中的应用组件,并重新指定事务属性,而不必改变代码或重新编译。在设计应用组件时,要记住,尽管Enterprise Beans 有一个可使应用组件的容器自动启动多步事务的机制,但是Applet 和应用的客户容器可能并不支持这一点。然而, Applet 和应用客户容器总是能够调用支持这一点的一个Enterprise Beans。还应当注意, JSP 页面和Servlet 没有被设计成是事务的,它们通常应当将事务工作交给一个Enterprise Bean 来完成。然而,如果事务工作在一个JSP 页面或Servlet 中是必须的,那么此种工作也应当是非常有限的。
(7) 可重用应用组件
J2EE 组件(Applet 、应用的客户、Enterprise Beans 、JSP 页面及Servlet )都被打包成模块,并以Java Archive (JAR )文件的形式交付。一个模块由相关的组件、相关的文件及描述如何配置组件的配置描述文件组成。例如,在组装过程中,一个HTML 页面和Servlet 被打包进一个模块之中,该模块包含H T M L文件、Servlet 组件及相关的配置描述文件,并以一个Web Archive(WAR )文件的形式交付,该WAR 文件是一个带.war 扩展名的标准JAR 文件。模块的使用使得利用相同组件中的某些组件来组装不同的J2EE 应用程序成为可能。例如,一个J2EE 应用程序的Web 版可能有一个Enterprise Beans 组件,还有一个JSP 页面组件。该Enterprise Beans 组件可以与一个应用客户组件结合,以生成该应用程序的非Web 版本。这不需要进行额外的编码,只是一个装配和部署的问题。并且,可重用组件使得将应用开发和部署过程划分成由不同的角色来完成成为可能,这样,不同的人或者公司就能完成封装和部署过程的不同部分。