JSR-299的修订公开草案现已发布。该草案由EE 6专家组成员提供意见,旨在解决围绕299与EE平台其他部分之间关系的一些批评。

术语和名称更改

规范名称——以及一些术语——已更改,以更好地反映299的重点是定义适用于所有EE组件类型的通用服务,而不是创建一个新的组件模型。

新的规范名称为Java上下文和依赖注入。术语“web bean”在规范中不再使用。

移除可插拔性合同

从规范中移除了独立的概念web bean管理器。现在假设299定义的功能始终由Java EE或可嵌入的EJB Lite容器提供。不再可能创建299的可插拔实现。

这有助于解决规范中的许多问题,并实现了一些功能改进。

请注意,管理器框架集成SPI仍然存在,并且仍然可以通过299将第三方框架与Java EE集成。

重新打包

299定义的API已分解为以下包

  • 作用域和上下文javax.context
  • 依赖注入服务javax.inject
  • 框架集成SPIjavax.inject.manager
  • 事件通知服务javax.event

有关更多信息,请参阅附录C。

注入所有Java EE资源类型

现在可以使用类型安全的299风格注入注入Java EE资源、远程EJB引用、Web服务引用、持久性上下文和持久性单元。例如,我们可以这样注入持久性上下文:

@UserDatabase EntityManager entityManager;

位置@UserDatabase是一种绑定类型。

有关更多信息,请参阅规范中的3.6节。

异步和分布式事件通知

事件观察者现在可以异步接收事件通知。请参阅7.5.7节。

事件类型现在可以映射到JMS主题,使与状态同步相关的事件能够在集群内或应用层之间传播。请参阅7.8节。

元数据继承规则和通用Bean实现的说明

在全新的第4章中,Bean之间元数据继承的规则已经得到了明确定义。此外,现在有一个框架提供的通用Bean的新概念,为其他Bean提供模板,这些Bean在某个系统中实现了它。

因此,299认可两种不同的代码复用特殊模式:特殊化实现

规范现在具有迄今为止最复杂的注解和基于XML的元数据复用和覆盖方案。然而,这些规则虽然用规范语言解释起来有些复杂,但在实际应用中应该是相当透明的。

在未来(EE 7?),299中定义的元数据设施可以扩展以包括其他元数据,包括EJB和JAX-RS元数据。我非常期待我们能够弃用现有的EJB部署描述符格式的那一天。

对活动的支持

现在,第三方框架,特别是编排引擎,可以注册仅在一定范围的活动中应用的Bean,例如,工作流任务、业务流程或Web交互。请参阅11.6节。

注入点元数据

引入了注入点接口,使某些特殊的注入情况成为可能。有关更多信息,请参阅5.6节。

拦截API的统一

最后,我现在与Ken Saks,EJB 3.1规范负责人合作,制作一个封装并概括目前由EJB定义的拦截器功能和299定义的扩展的单个文档。为了反映这一计划,拦截器/装饰器章节已移至附录A,并最终将从规范中删除。

我们可能会用299中简单Bean的定义进行类似的过程,但这仍然是正在讨论的事情。

结论

感谢所有参与最新草案制作的人,以及所有参与围绕299未来发展的艰难而复杂的谈判的人。我知道所有参与的人都曾在某些时候感到沮丧,但最终结果是一个更好的规范和一个更好的EE 6平台。


返回顶部