Enterprise JavaBeans (EJBs) 到底有什么了不起的,为什么对 Java 2 Platform, Enterprise Edition (J2EE) 开发来说如此重要?在这一期的 Geronimo 叛逆者 专栏中,OpenEJB 的共同创始人 David Blevins 将介绍 EJB 可以为您做什么,并解释 OpenEJB 如何被选择作为 Apache Geronimo 的 EJB 实现。
简介
说实在的,在我 看来,EJB 并不好用。它们需要开发人员在应用程序中投入比他们想像的还要多的精力;它 们引以为基础的接口强制您实现许多您甚至根本不需要的功能;而且因为您需要在容器中运 行它们,所以使用 JUnit 将它们与应用程序的其他部分一起测试是十分棘手的。
但 是,它们也许恰恰正是 J2EE 开发的基石。
所以当 The Powers That Be 邀请我在这 一期 Geronimo renegade 中选择 OpenEJB 作为 Apache Geronimo 的 EJB 实现时,我的兴 趣被激发了。也许我能最终弄清楚它到底有什么了不起的。
OpenEJB 如何成为 Apache Geronimo 的一部分
我曾打电话给 David Blevins,他与 Richard Monson- Haefel 在六年前共同创建了 OpenEJB,他还创建了 Geronimo。我想知道 OpenEJB 为 Geronimo 提供了什么,以及 EJB 本身为开发人员提供了什么。
我首先问他 OpenEJB 是如何在 Geronimo 等比较大的项目中兴起的。David 解释说,他在 Geronimo 尚未正式发 布、只是一个传闻的时候就已经支持 Geronimo 项目了。“所以我绝对是所谓的 Geronimo 阴谋的一部分” ,他开玩笑地说。
哈,又是阴谋。我问他为什么总 是这样形容 Geronimo 呢。“哦,Geronimo 真的非常 FUD(恐惧,不确定,怀疑), 对于如此标榜我们的那些人来说。” 他解释说,Geronimo 创始人的目标首先是将将合 适的人聚集起来,然后才考虑合适的组件。“参与创建 Geronimo 的个人基本上都将自 我和自己的代码抛在一边,而决定首先将自己投入项目中” ,David 告诉我。基本上 ,他们是从一张白板开始尝试创建项目的。
那么 OpenEJB 是如何成为这张白板的一部分呢?“哦,我猜原因就是您所知道的那 些”,David 说。但他并不十分严肃。事实上,一开始是最初的 Geronimo 创始人之一 的 Dain Sundstrom 邀请他加入该项目的。Dain 实际上在一年前就曾试图聘请 David 参与 一个类似的开放源码项目:“有一段时间,他参加了 Twin Cities Java Users Group (TCJUG) 的每一次社交聚会,并不断就此事纠缠我。”
当他们确实走到一起时 ,真的是命中注定一样。虽然他们两个都来自 Minnesota,但组建 Geronimo 项目的时候, David 正在 San Francisco 任教。“我说,‘这样吧,我现在在 San Francisco ,所以您必须等到我返回 Minnesota。’ 当然他说,‘太好了,我也在 San Francisco’ ,他刚从一个会议返回来。所以那天我们正好在 San Francisco 聚到一 起讨论,他本来以为会继续得到我一直给他的 no。但当重心从另一个项目转到 Apache J2EE 实现时,答案立即变成 yes。”。
而且,作为 OpenEJB 的领导人(因为 Monson-Haefel 在几年前已经离开),David 决心围绕 Geronimo 的工作重振该社区。 “我们只知道这是应该做的事情”,他说。
不仅如此,OpenEJB 和 Geronimo 这两个团体建立了大型项目中罕见的协作。OpenEJB 的 Alan Cabrera 编写了 Geronimo 的安全系统。Aaron Mulder,一本有关 Geronimo 的可自由下载的书籍的作者,也 郑重其事地检查了这个由 IBM 捐献的控制台。Geronimo 的 Dain Sundstrom 和 David Jencks 为 OpenEJB 做了不计其数的工作,以使其遵循 EJB 2.1(Open EJB 原来只遵循 EJB 1.1)。Gianny D'Amour,Geronimo 的早期附加物,全力促进 David 称为 “我所 见过的最大的 Geronimo 或 OpenEJB 补丁,基本上完成了我们的 CMP(container-managed persistence,容器管理持久性)实现” 。Jacek Laskowski,一位 OpenEJB 的长期贡 献者,第一个开始了 Geronimo-Tomcat 集成工作,该工作由 Geronimo 的 Jeff Genender 驱动完成,Jeff Genender 最终也成为 OpenEJB 的贡献者。