领先一步
VMware 提供培训和认证,助您快速提升。
了解更多祝贺 WebLogic 团队发布 WebLogic 10 预览版,该版本通过了 Java EE 5 CTS。在他们使用 J2EE 1.4 出现偏差之后,看到 BEA 再次迅速行动,这真是太好了。
这对 Spring 社区来说是一个有趣的新闻,因为 WebLogic 10 在内部使用Pitchfork。Pitchfork 项目是一个由 Interface21 领导并与 BEA 合作开发的开源项目,它在 Spring 之上实现了 EJB 3.0 拦截和 JSR-250 注解。它用于 WebLogic 10 EJB 容器和其他服务器组件中,以满足新的规范要求,但与 WebLogic 没有绑定。Pitchfork 可以独立使用(尽管这不是其主要目标),也可以被其他应用服务器采用。
顺便说一句,Pitchfork 项目不应该与Project Pitchfork(一个德国乐队)混淆。紧急新闻:我刚刚发现他们有一首名为It's Spring的歌曲。不过,我个人不是他们的粉丝……
使用 Pitchfork 意味着,从 WebLogic 10 中的运行时角度来看,每个 EJB 3.0 会话或消息 Bean 也是一个 Spring Bean。BEA 选择这样做是为了加快上市时间,并在尽可能大的程度上将新规范功能的实现建立在经过验证的代码之上。Spring 已经完成了他们所需的大部分工作,这帮助他们实现了激进的时间表。这也应该有助于确保安全的升级路径。许多新功能是由 Pitchfork 在经过验证的 Spring 代码之上提供的;绝大多数经过验证的现有 WebLogic EJB 代码库保持不变。当然,采用这种方法也突显了 BEA 对 Spring 质量的信任。
从长远来看,Spring 在底层的使用应该会使运行 WebLogic 的 Spring 用户受益,允许服务器在更深层次上管理 Spring 组件(它已经有效地“原生”地理解它们),并允许使用 Spring 组件模型来补充 Java EE。EJB 负责人 Patrick Linskey 最近暗示了一些这些功能。
这种架构也为我们提供了未来在更集成的级别上向 WebLogic Server 开发人员公开 Spring 工件的机会……[例如]……在 WebLogic Server 集群中部署 Spring Bean;Spring 会话复制(搭载 WebLogic HTTP 会话复制);WebLogic 安全与 Spring Bean 集成;基于 WebLogic 的 Spring Bean 集群远程调用;以及在 WebLogic Server 管理控制台中管理 Spring Bean。此外,我们已经在内部为一些引人注目的面向外部的 Spring 集成功能奠定了基础,但我们还没有在 WebLogic Server 10 中公开这些功能。在以前的预览版中,可以访问服务器内部的 Spring 功能并实际使用它。Spring IDE 团队充满活力的 Christian Dupuis 在第一个预览版发布时写了一篇博客,展示了每个 EJB 3.0 会话或消息 Bean 也是一个 Spring Bean,并且可以通过提供与 EJB 名称相同的 Spring Bean 定义来将更强大的 Spring 注解和真正的 AOP 应用于这些组件——这是一种简单而优雅的方法。我不确定这种机制在当前的预览版中是否有效,还没有时间去检查;我知道 BEA 的目标是首先发布一个符合规范的服务器,然后考虑如何最好地打包和记录增值扩展。
与 WebLogic EJB 团队一起在 Pitchfork 及其在 WebLogic 中的使用方面合作非常愉快——特别是 Michael Chen 和 Patrick Linskey。不可避免地,与 Patrick 的一些合作是在啤酒的陪伴下进行的。
显然,我对 Spring 方面(尤其是因为我和 Costin Leau 也参与其中)特别兴奋,但 WebLogic 10 中当然还有许多其他重要的内容:特别是将 Kodo/OpenJPA 作为 JPA 持久性提供程序的整合。该产品的核心是 Apache 许可的开源。很高兴看到继续强调 QoS 功能,而不仅仅是 API 追踪:例如,自动 JMS 故障转移。大型企业客户尤其更关心运营和正常运行时间,而不是规范级别。
过滤类加载器听起来特别受欢迎(如果说它迟到了的话)。在复杂的应用程序中,J2EE 类加载传统上一直是地狱般的存在——痛苦且难以移植应用程序,即使它们符合标准并使用可移植框架。随着服务器(包括 WebLogic 和 WebSphere)越来越多地在内部使用开源,冲突变得越来越普遍,需要进行黑客攻击来修复。(就像 ANTRL 与 Hibernate 3 和 WebLogic 8.1 的冲突一样,可以通过使 WAR 中的库优先于服务器中的库来解决。)WebLogic 10 似乎将在这里提供一个可靠的解决方案,它使特定应用程序能够以更灵活的方式过滤掉服务器依赖的类。