Apache Beehive——Workshop运行时的发展

1/5/2008来源:Java教程人气:4989


  概述

  WebLogic Workshop 8.1包括了一个应用框架和一个IDE来支持使用页面流、控件和带注释的web服务开发企业应用程序。本文将介绍Workshop 8.1运行时与Apache Beehive项目之间的一些区别。

  社区的变化

  自从2003年WebLogic Workshop 8.1应用框架发布以来,它已经经历了重大的变化。更值得注重的是,BEA将该框架作为蜂巢计划(Beehive)捐献给了Apache软件基金会。这是在2004年5月公布的,此后,Beehive就一直处于Apache孵化器中,直到2005年8月它成为一个顶级Apache项目。这意味着其代码、社区、bug、开发流程以及项目的未来现在都对整个企业java社区公开了。然而,变化并未结束,因为与此同时Beehive也已经获得了巨大的技术进步。

  技术的发展

  与Workshop 8.1相比,Beehive框架中的技术已经发生了重大变化。现在Beehive控件包含在一个更为轻量级、更易于测试且更灵活的容器中,而仍然保持了一个简单的元数据驱动的用户模型。NetUI具有更丰富的特性,而且由于在编程模型和表示层所做的改进,它也更易于配置了。从Workshop 8.1到Beehive最为明显的变化可能是从Javadoc元数据标签到与标准兼容的Java 5.0注释的转换。接下来,我们将深入探讨Beehive的每一部分。

  Controls

  Beehive中的Controls框架是一个更为通用的元数据驱动的POJO框架。该框架被分为两部分——一个核心框架,它支持开发基于JavaBean的注释,以及一组系统控件和服务,用于特化核心框架以抽象对JDBC数据源、JMS队列和EJB之类的J2EE资源以及事务和安全性服务的访问。

  Workshop 8.1控件运行在EJB容器内部,而Controls核心框架不再依靠于J2EE。该框架还可以在J2EE容器外进行测试,这意味着可以无需启动应用容器而对业务逻辑和资源访问进行单元测试。

  Controls核心框架支持一个控件接口与其一个或多个实现之间的松散耦合——可以动态地将一个实现绑定到接口上。此外,现在可以在运行时重写应用于控件的元数据,以便更轻松地配置控件在不同的环境中执行。例如,可以通过这个可插入的元数据机制,在运行时重写数据库控件的JNDI数据源名称。

  控件的实例化可以使用声明式(使用@Control注释)和编程式(使用JavaBean API调用)的方式。控件甚至可以通过标签用于jsp容器中。在Beehive中,控件方法既不是隐式进行处理也不是隐式进行保护的。这些功能可由开发人员根据需要添加。

  系统控件

  系统控件是对Controls核心框架的扩展,它们提供了对各种J2EE技术的抽象,包括EJB、JMS和JDBC。假如您熟悉Workshop 8.1中的内置控件,您就很可能会熟悉它们在Beehive中的后继者。

  例如,Beehive数据库控件仍然对方法设置了一个包含对方法参数的动态绑定的SQL语句,并映射结果集到返回类型,但是现在又新增了一些其他的特性,比如可插入的结果集映射、批量更新、生成键的检索、容器外测试等等。

  NetUI和页面流

  NetUI中的页面流和UI框架也得到了发展。页面流支持许多新特性,包括:

  • 声明式验证(通过Jakarta的Commons Validator)
  • Struts Tiles
  • 可以将任意JavaBean用作动作表单,并支持对这些表单的验证
  • 页面流基类和可继续的元数据
  • javascript 弹出窗口
  • 与JavaServer Faces(作为UI显示技术)集成

  页面流与控件之间的架构差异也得到了调整,以便控件可以包含在页面流内部,就像包含在Web服务内部一样。例如,当Beehive数据库控件向页面流返回一个JDBC结果集,结果集不会被关闭。

  其用户界面技术,即NetUI JSP标签,现在支持可验证的Html 4.01和XHTML 1.0 transitional / strict呈现。JSP 2.0表示语言几乎被所有的JSP标签属性用于数据绑定。这向NetUI标签用户公开了JSP 2.0容器的表示语言、隐式对象以及JSP函数的全部功能。新增了一个数据网格,它呈现随机的数据集,比如对象数组、xmlBean、行集和结果集。该数据网格还支持一个灵活的排序、筛选和分页模型。还有一个新增的支持Ajax的HTML树。

  项目模型和项目构建

  Beehive中的另一个重要变化是项目模型——没有了!Beehive源文件只是带注释的Java 5.0,而没有任何定制的文件扩展,是纯粹的java。框架没有对使用它的项目的结构做任何假设,它可以用于构建web应用程序、web服务、企业应用程序,甚至是可以在Java Swing应用程序内部运行的控件。Beehive还提供了一组Ant 1.6 宏指令,用于构建控件和页面流,这些宏指令可以随机组合以支持任一种结构的项目。最后,构建支持Beehive的应用程序只需要Java 5.0 JDK中可用的工具而不需要使用IDE。虽然如此,使用Eclipse以及其他工具无疑会使开发工作更轻松。

  测试