Enterprise JavaBeans组件慨述(1)
· EJB 体系结构的历史和目标
本文概述 Enterprise JavaBeans (EJB) 技术,旨在让读者快速理解基本概念。第 1 部分讲述 EJB 技术的历史和某些目标、优点和技术。为了简洁明了,有选择地讲述EJB 技术的一些要害要素。请注重,虽然 EJB 组件依靠于一些基础的 Java 服务(如 Java Transaction Service),但使用 EJB 组件及熟悉这些组件的好处并不需要把握这些相关技术的知识。
Enterprise JavaBeans 技术自 1998 年 3 月问世以来很受好评。下面这段话就是一个例子:
“自从两年多以前问世以来,Enterprise JavaBeanstm 技术在平台供给商和企业的开发小组中,同样都保持着空前的发展势头。这是因为 EJBTm 的服务器端组件模型简化了中间件组件的开发,这些中间组件都是事务性的、可伸缩的和可移植的。Enterprise JavaBeans 服务器通过为中间件服务(如事务处理、安全性、数据库连接及其他)提供自动支持,降低了开发中间件的复杂程度。”(Sun Microsystems 网站)
Enterprise JavaBeans 这一名称利用了 Java bean — 这种可移植、可重用的 Java 软件组件的声望。Enterprise JavaBeans 技术把 Java 组件的概念从客户机域扩展到了服务器域:这是 Java 技术成长过程中有重大意义的一步,它使 Java 技术发展成为一种强健的、可伸缩的环境,能够支持以任务为要害的企业信息系统。
· 服务器上的 Java 应用程序
Java 编程语言最初在 Web 开发人员中获得好评的一个原因是,它支持称为 applet 的可下载 Java 程序。对 Applet 的支持以 Applet 类的形式内置到了 1.0 版的 Java Development Kit (JDK) 中。按照 1.0 版的时间框架,Java 开发是以 applet 和应用程序作为中心的。基于 JDK 1.0 版的 Java 读物都是从 applet 和应用程序的角度来描述 Java 编程的:
“Java 程序由更多的类定义中的某一个组成,每个类定义均已编译成它自已的 Java 虚拟机对象代码的 .class 文件。这些类之一必须定义一个叫做 main() 的方法,程序就是从这个方法开始运行的。想调用一个 Java 程序,需要运行 Java 解释器 java,并指定包含 main() 方法的类的名称。请注重 Java applet 并不是一个应用程序 — 它是一个由已在运行的 Java 应用程序(如 Web 浏览器或 applet 查看器)装入并运行的 Java 类。”(见 Flanagan 所著的 Java in a Nutshell)
Java 应用程序可以在服务器上运行,但是不管是在客户机-服务器环境下,还是在基于 Web 的环境下,JDK 中都没有提供让 Java 应用程序专用于服务器机器的接口或包。熟悉到 Java 在 Web 环境下作为一种服务器语言的潜力,Sun Microsystems 编写了 Java Servlet 规范。servlet 在许多方面与 applet 相似,它是专门为在 Web 服务器机器上运行而设计的 Java 程序:
“servlet 是由容器治理的 Web 组件,可产生动态内容。servlet 是一种小型的、与平台无关的 Java 类,被编译成体系结构中立的字节代码,这种代码可以动态地加载到一个 web 服务器上,并由此 web 服务器运行。servlet 通过一种由 servlet 容器实现的请求-响应模型与 Web 客户机进行交互。这种请求-响应模型建立在超文本传输协议 (HTTP) 行为的基础之上。”(见 JavaSoft 的“Java Servlet API Specification”)
在一台 Web 服务器控制下,在多台服务器上运行若干小型用户程序,这种想法并不新鲜 — 一段时间以来,公共网关接口 (CGI) 程序(常被称为 CGI 脚本)一直起着这种作用,并推动了 Web 的普及。但 Java servlet 可以以更高的效率和可移植性来实现这一目的,因而可望最终会取代 CGI 程序。为 servlet 提供运行时环境的软件(通常被称为 servlet 引擎)可以添加到现有的、本身并不支持 Java 可执行程序的 Web 服务器上。
Java servlet 的出现,为应用程序员使用 Java 来创建 Web 应用程序开辟了新的途径。但是,仅有 servlet 还不能为真正的企业计算提供完整的模型。CGI 应用程序本身往往不是完整的应用程序,在处理接收自 Web 浏览器上用户的信息请求时,CGI 只是整个处理过程中的一个中间步骤。例如,CGI 应用程序的一种常见用途是访问数据库。将它用于这种任务时,CGI 程序提供一种方法,将用户的数据请求连接到能满足这种请求的企业数据库。CGI 程序经常充当一种中间软件,从 Web 浏览器接收请求,决定必须调用哪些计算资源来满足这些请求,并向浏览器发回响应。Java servlet 与 CGI 程序一样,最适合充当连接前端 Web 请求与后端数据资源的中间层组件。