2011-10-07 82 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並禁用容器提供的變體。