【问题标题】:CDI and Bean Validation in Java EE 5 Application Server?Java EE 5 应用服务器中的 CDI 和 Bean 验证?
【发布时间】:2011-10-07 09:49:52
【问题描述】:
CDI 和 Bean 验证是 Java EE 6 标准规范。不过,只需将库添加到项目中,我就可以在 Java EE 5 应用程序服务器(以及 Java SE)中同时使用它们。
这对吗?
在 Java EE 5 应用服务器而不是 Java EE 6 应用服务器中同时使用两者有什么缺点吗?
我必须使用 Oracle 11 g Suite 和 JDeveloper。同时,JDeveloper 支持 JSF 2.0,但我找不到任何对 Bean Validation 或 CDI 的支持。然而,这不是问题。没有 IDE 支持(用于代码生成、分步指南或其他),但我可以通过使用简单的 java 编辑器来使用这些库。对吧?
【问题讨论】:
标签:
java
jakarta-ee
ide
java-ee-6
cdi
【解决方案1】:
Java EE 6 基本上是一组 API。如果应用服务器实现了所有这些规范,那么它就符合 Java EE 6。但是您仍然可以在符合 Java EE 5 的应用服务器中使用这些 API。有些人甚至将 EJB 放入 Tomcat,所以从技术上讲这是可能的。使用兼容的 AS 仍然有意义,因为它还提供与规范相关的所有服务。
【解决方案2】:
我相信这是正确的。
缺点是你落后了一个版本。如果您决定升级到 Java EE 6(例如新导入等),您可能需要修改您的代码
【解决方案3】:
您可以很容易地将 Apache OpenWebBeans 或 JBoss Weld(从 2 个 CDI 实现中选择一个)添加到您的 WEB-INF/lib 并在您的 web.xml 中手动注册 servlet 侦听器。瞧,那么您就有了 CDI 支持!
对于 JSR-303 Bean 验证,它有点棘手,因为只有 JPA2 和 JSF2 使用它。因此,您需要将 Myfaces2 和 Hibernate-3.5、EclipseLink2 或 OpenJPA2 添加到本地 jar 并禁用容器提供的变体。