2011-10-07 78 views
4

CDI和Bean验证是Java EE 6标准规范。尽管如此,我仍然可以在Java EE 5应用程序服务器(以及Java SE中)内使用这两种库,只需将这些库添加到项目中即可。Java EE 5应用服务器中的CDI和Bean验证?

这是正确的吗?

使用Java EE 5应用程序服务器而不是Java EE 6应用程序服务器有什么缺点吗?

我必须使用Oracle 11 g Suite和JDeveloper。同时,JDeveloper支持JSF 2.0,但我找不到任何对Bean验证或CDI的支持。尽管如此,这不是问题。没有IDE支持(代码生成,分步指南或其他),但我可以通过使用简单的Java编辑器来使用这些库。对?

回答

0

我认为这是正确的。

缺点是你是后面的版本。当您决定升级到Java EE 6时(例如新的导入等),您可能必须修改代码。

4

Java EE 6基本上是一组API。如果应用服务器实现了所有这些规范,则符合Java EE 6标准。但是您仍然可以在符合Java EE 5的应用程序服务器中使用这些API。有些人甚至把EJB放入Tomcat,所以在技术上这是可能的。使用兼容的AS仍然有意义,因为它还提供了与规范相关的所有服务。

0

您可以很轻松地将Apache OpenWebBeans或JBoss Weld(选择2个CDI实现之一)添加到您的WEB-INF/lib中,并手动将servlet侦听器注册到web.xml中。瞧,那么你有CDI的支持!

对于JSR-303 Bean验证它有点棘手,因为只有JPA2和JSF2使用它。因此,您需要将Myfaces2和Hibernate-3.5,EclipseLink2或OpenJPA2添加到本地jar并禁用容器提供的变体。