最新版的OpenEJB(一个开源、轻量级的EJB 3.0 实现框架)支持 EJB 3.1 Singletons、构造器注入及与 Spring 框架的集成。Apache OpenEJB 开发团队上周发布了OpenEJB 3.1。该最新版的OpenEJB 支持EJB 3.1 的一些特性,它既可以作为独立服务器,也可以作为嵌入式服务器使用在 Tomcat 、 JUnit 、 Eclipse 、 Maven 、 Ant 及其他任何的 IDE 或应用中。 EJB 3.1 规范将作为 Java EE 6 (预计将在明年初发布)的一部分发布。
EJB Singletons:
EJB 3.1 的 Singleton 支持为 EJB 提供了更多的功能,如应用启动 / 关闭的回调及多线程能力。现在 Stateless beans 所能完成的大部分功能都可由一个多线程的 Singleton 完成。除了嵌入式 EJB 容器和 Collapsed EAR(.war 文件中的 ejb)功能(将成为 EJB 3.1 的组成部分)以外,该发布还支持新的 EJB 3.1 Singleton Session bean 类型。Singleton 特性确保应用中只会有一个 Stateless Session bean 的实例,它可被多个线程如 Servlet 并发调用。它可完成传统的 Session bean 所能完成的任何事情,如对本地和远程业务接口的支持、Web Services 及一些关注点,如安全和事务等。此外,可以使用 @PostConstruct (当应用启动时会被调用)和 @PreDestroy (当应用关闭时会被调用)来管理 Singleton 中定制的初始化和资源回收逻辑。这使其可以作为应用生命周期的监听器,而之前只有 Servlet 具备这个能力。它具有 @Startup 注解,在概念上这与 Servlet 很相似,但与 Servlet 不同的是它不以数字作为参数。相反,@DependsOn 注解可用来定义主 Session bean 需要哪些 Singletons,同时容器会确保在启动主类之前先启动依赖的类。
构造器注入:
构造器注入特性可以在构造方法级别使用注解对Java EE 资源如servlet、filter、listener 或JSF managed bean 进行注入。通过这种方式,开发者仍旧可以使用final 字段和普通的Java 构造方法来管理Java EE 组件的依赖,同时可以避免setters 和private 字段的注入。
Spring 集成:
Spring 集成特性可以使开发者将 Spring beans 嵌入到 OpenEJB 中,也可以将 OpenEJB 组件嵌入到 Spring 应用中。可以通过 @Resource 注解将 Spring beans 注入到 EJB 中,通过标准的 Spring依赖注入(DI)机制将 EJB 注入到 Spring 中。OpenEJB 3.1 中的该特性还处于试验阶段,会根据用户的反馈进行改进。OpenEJB 3.1 中还包含对现有特性的几个增强。列举如下:
- 多路客户——服务器端的探知和分组
- 支持对 JSF 1.2 Managed Beans 的注入
- 可以在类路径下探知 EAR 式的模块集合
- 可以通过类路径探知 ConnectorModule 和 PersistenceModule
- 针对单元测试改进的 JavaAgent/JPA
- SSL 上的 EJBd 协议
- 基于 JDBC/DataSource 的登录模块
OpenEJB 项目团队已经发布了 Singleton API 的文档,同时还有几个示例,用户可以从中学到更多关于 Singleton 和 Spring 集成等新特性的内容。
查看英文原文: OpenEJB 3.1 Supports EJB Singletons, Constructor Injection and Spring Integration
评论