关键在于这使得EJB开发者(或者在Tomcat中使用OpenEJB的Servlet开发者)能真正深入到JavaEE的依赖注入功能,并且使之成为自己的东西。枚举、类和集合是我们所增加的额外的内建类型——我们期待在Java EE 6中也能具备这样的类型。此外,我们支持在应用中通过使用java.beans.PropertyEditor实现对任何你所创造对象的注入。这些增强使你能扩展注入以包含你的对象和资源并且使得Java EE作为一个通用的DI框架具有更好的可用性。你可以写一个普通的单元测试以调用EJBs,就像其他EJB客户端所做的那样。区别在于容器和EJBs就运行在你单元测试的VM中。我们会对应用的classpath进行调整使之适应于测试用例,这样你就可以通过JNDI查找你的测试用例了。你只需针对本地容器和远程容器分别使用一个不同的InitialContextFactory,然后就可以相同的方式操作一个嵌入式数据库了。通过这种方式你可以测试EJBs的方方面面,没有任何局限性。畅想一下,你可以测试webservice、Stateful bean及扩展的EntityManager,或者测试带有JTA EntityManager的Stateless bean并且测试用例运行于一个事务之内。这也是我们期望在EJB 3.1中能看到的一个特性。当前OSGi支持适合使用OSGi平台的人,他们渴望以包的方式增加OpenEJB以获得EJB支持,或者由类似于Apache ServiceMix这样的项目所驱动的人,该项目做的就是提供EJB WebServices支持。OpenEJB可用的含有EJB jars的所有包都将被部署。其动因就是让人们能绕过防火墙的限制并使Tomcat/OpenEJB用户可以通过一个单一的端口来运行ejbs和servlets。这是由一个Servlet驱动的,你可以将其加到任何应用中,也可以删除它,还可使用SSL等等。最终的目标就是提供RESTful ejb调用。在未来的3.x版本中你会见到它。OpenEJB已经是EJB 3.1预览版的一个不错的来源了,比如这里提到的特性以及在1.0版中推出的WARs中的EJBs特性等。我积极参与了EJB 3.1专家组的工作并且对工作的进程及OpenEJB所做的贡献感到兴奋异常。我们希望能再接再厉并在最终规范发布前提出其他建议如单例及异步beans。既然这些特性的时间表已经公布出来了,我们期望看到更多EJB 3.1相关的特性以预览的方式呈现出来,如@Singleton和@Asynchronous、没有接口的视图(the no-interface view)。嵌入式支持和Tomcat集成总是在不断被调整和扩展。我们在以下方面一直在不懈努力:集群、CMP/JPA适配器的进一步优化、将EJB 2.x应用转化为EJB 3.0(实际上是根据部署描述符增加了注解)的Eclipse插件、通过备选JAXB实现产生优化的代码改善主要的WebServices性能。

发表回复