准备好让您的事业起飞了吗?不管您正在开发的应用程序是什么类型的,Java™ 2 平台企业版本(Java™ 2 Platform,Enterprise Edition,J2EE)是这里要坚持的一个重要标准。掌握了这个标准无疑会大大提升您作为一个程序员的价值。这篇文章无论是对新手还是对有经验的开发 人员来说,都是很有帮助的,文中介绍了 J2EE 1.4 标准(Apache Geronimo 渴望遵循的标准)的入门知识,以及它同 Geronimo 技术的关系。您可以从中了解一些由 J2EE 定义的比较重要的容器类,同时还能了解到 GBean 技术和更加先进的 Geronimo 概念。
J2EE 是一个不依赖于平台的环境,设计这个环境是为了开发和配置在企业范围内使用的基于网络的应用程序。这个平台曾被喻为元语言或语言超集。但在本质上,J2EE 仅仅是 Java 编程语言和一些特定的 Java 类的最小集合。(参见 参考资料 中 J2EE 类文档的链接。)
J2EE 由用于开发多层且基于网络的应用程序的应用编程接口(API)、服务以及协议组成。它是一个复杂的标准,要想写一篇使之简化的文章,其难度不亚于撰写一篇 简化联邦税务代码的文章,这可不是一件容易的事。但是,让我们从它的一些基本原则开始讲起,直至少量的实现细节,整个旅程还是会让您有所启发的。现在扣紧 安全带,让我们开始吧!
J2EE 多层设计中的客户机层是由纯 HTML 协议表示的,这些 HTML 由 JavaServer Pages(JSP)和 Java servlet 生成,并用传输协议(当然是 TCP/IP)潜在地部署多个 Java 小程序。任何符合标准的 Web 浏览器都能够作为 J2EE 系统的客户机正常运行。
服务器层包含 Enterprise JavaBean(EJB)技术,用这些技术定义了企业应用程序的平台逻辑。EJB 服务器提供线程管理、并发管理、内存管理以及安全方面的功能,并自动完成这些任务,以便于应用程序程序员摆脱这些细节方面的负担。这就是 J2EE 设计的威力所在。
处在最底层的是企业珍贵数据的核心,在这里,可以通过 Java 数据库连接(Java Database Connectivity,JDBC)接口访问标准的数据库工具,如 IBM® DB2®、Oracle、MySQL 或任何数量的基于结构化查询语言(Structured Query Language,SQL)的其他数据库引擎。
J2EE 的全部都是关于定义 Web 服务的 —— 对于定义动态页面的方式而言这是一个很不错的名字,在这种方式下程序动态地生成网页,而不是仅向进行调用的客户机浏览器返回一般的 HTML 文本文件。J2EE 是一个真正的各种技术缩写词的大杂烩,每种技术用一个容易记住的缩写词来描述。作为程序员,您不需要苛求自己掌握所有这些技术以在 J2EE 环境中成就辉煌的事业,但是您只要学到更多这方面的知识,就能够使您的事业获益。
|
接下来要介绍的是对众多 J2EE 技术中某些技术的一个快速参考。掌握了所有这些技术的程序员在如今的职场上需求极旺。这些技术如此受欢迎,我认为这是由于它们的重要性以及部署的简单性,当然,这纯粹是我主观的观点。
我提供这份清单既是为了解释 J2EE 的复杂性,也是为了提供一份帮助您继续学习这些技术的粗略的地图。重要的技术包括:
|
由于 J2EE 是为企业范围内的应用程序而设计的,该服务器基础设施会自动地为您处理大量的任务。这些任务包括容器管理的事务、可伸缩性、故障转移管理以及安全控制。
容器管理的关系既支持实体 bean(实体 bean 是在持久存储机制中表示业务对象的 Java 类 —— 例如,数据库中特定的一行)之间的一对一关系,也支持它们之间的一对多关系。具有一对多关系的实体 bean 使用 Java 集合来表示多 的那一端。管理这样一个关系在概念上同现代关系数据库技术中的关系建模相似。
EJB 容器对于维护所有实体 bean 关系的引用完整性来说是很重要的。在一对一关系中,如果改变了关系的一端,容器会自动替换旧的关系。
对容器管理的事务怎么强调都不会过分。Apache Geronimo 通过提供一个内核来管理 J2EE 标准所指定的容器类以遵循 J2EE 标准。
|
Apache Geronimo 设计中主要的容器类是GBean 。事实上,Geronimo 中的几乎任何东西都是一个 GBean。在 Apache Geronimo 的设计中,框架管理 GBean 类的生命周期。当把多个部分部署到一个容器中时,会需要启动或者停止它们。另外,GBean 可以有依赖项。
例 如,Bean Y 必须为 Bean X 的运行做好准备,因为 Bean X 必须使用来自 Bean Y 的某些服务才能正常运行。在 Geronimo 的方式中,GBean 将框架必须管理的所有东西打包,特别是前面提到的依赖项。Geronimo 威力的核心和灵魂在于提供了一个框架,在这个框架中,开发人员能使用他们已有的 J2EE 资源。
通过使用 GBean 控件包装现有的 J2EE 资源,能满足 J2EE 标准的生命周期需求。Geronimo 的核心是一个针对 GBean 定义了反转控制(Inversion of Control,IoC)框架的内核。IoC 框架创建了一个环境,在这个环境中,框架能自动管理组件之间的依赖项。
假设 清单 1 是在 Application X(无需担心 Application X 的细节,仅假设它会加载下面的类并调用 doit() 方法)中所使用的 Web 服务。
public class WebService { |
Application X 拥有称为 MessageContext 的东西,其中包含了所有的配置信息。通过使用这个 WebService 类的 MessageContext,且该类拥有一个像 XX(MessageContext) 一样的构造方法,或者使用诸如 setMessageContext(MessageContext msgctx) 的方法,Application X 就能注入 MessageContext。
典型的 J2EE 容器含有两种重要的类:一类是核心服务类,诸如 EJB 容器和 Web 容器,还包括核心服务所部署的应用程序类。有了这个两层的架构,通过该框架提供的自动化过程,对二级类的管理就简化了。
GBean 的行为反映出 Geronimo 架构的本质。通过使用计划(本质上是 GBean 的 XML 串行化),GBean 被加载、启动和处理来管理应用程序类。
部 署描述符定义了该框架管理下的应用程序,并且通常打包为 J2EE 应用程序档案文件。Geronimo 部署器通过从中构造 GBean 来解析这些档案文件。部署器构造的 GBean 随后被启动并运行! —— 该应用程序就可用了。随后,GBean 可以被串行化,也可以被存储起来,这样可以在引擎执行其他任务时保持状态。这个行为使得这些部署过的程序即使在重启服务器后仍可使用。
GBean 通常以下列三种状态之一的状态存在:
在代码中,GBean 生命周期状态的典型实现如 清单 2 所示。
public class AppFunction implements GBeanLifecycle { |
GBean 实现了 GBeanLifecycle 接口,允许 Geronimo 框架打开或关闭 GBean,并允许该框架在任何特定的时刻都能够控制状态数据或运行上下文所驻留的位置。
这里有一些需要牢记的 GBean 编写技巧:
该框架从这个方法中接收 GBean 使用或暴露的重要元数据。有关操作、引用以及基本属性的元数据在一个静态初始程序块中被初始化,如 清单 3 所示。
public static final GBeanInfo GBEAN_INFO; |
当为属性和引用命名时,必须 遵循标准的 Java 命名惯例:
遵循了这些规则会使 GBean 的配置更加简便。
|
想 要在 Apache Geronimo 环境中有效地编程,必须要理解 GBean —— 它是 Geronimo 满足 J2EE 标准的功能需求的一种方式。Geronimo 1.0 版已经通过了 J2EE 的 Certification Test Suite 的测试,并迅速成为 J2EE 软件技术标准。这是从事几个开放源码项目的众多工程师和来自世界各地的个人贡献者们共同努力的结晶。这确实是一项值得学习的技术。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/374079/viewspace-130296/ ,如需转载,请注明出处,否则将追究法律责任。