無論如何,我愿意嘗試一下,然后開始。 如果您想開始使用任何JBoss技術,最好先檢查一下JBoss Developer Framework 。 這是各種示例和快速入門的不錯集合,可幫助您開始使用Java EE及其技術。 RichFaces-Validation示例就是其中之一,該示例演示了如何一起使用JSF 2.0,RichFaces 4.2,CDI 1.0,JPA 2.0和Bean Validation 1.0。
這個例子

該示例由一個成員實體組成,該成員實體具有一些JSR-303(Bean驗證)約束。 通常,從數據庫開始,在持久性層,最后是與客戶端緊密交互的視圖層中的多個地方,對這些位置進行檢查。 即使此快速指南不包含持久層,它也從Enity開始,它很好地反映了現實生活中的情況。 該應用程序包含使用JSF和RichFaces編寫的視圖層,并包括用于新成員注冊的AJAX向導。 新注冊的成員需要在實際“注冊”之前提供一些信息。 這包括通過電子郵件發送姓名和電話號碼。
入門
我將不再重復出色而詳細的快速入門已經向您展示的內容。 因此,如果您想在JBoss AS7上運行它,請去那里。 我們從一個空白的Maven Web項目開始。 最好,最簡單的方法是啟動NetBeans 7.2并創建一個。 讓我們將其命名為“ richwls-web”。 打開您的pom.xml并開始在那里進行一些更改。 首先在此處刪除認可的內容。 我們不需要它。 接下來是添加一點dependencyManagement:
<dependencyManagement><dependencies><dependency><groupId>org.jboss.bom</groupId><artifactId>jboss-javaee-6.0-with-tools</artifactId><version>1.0.0.Final</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.richfaces</groupId><artifactId>richfaces-bom</artifactId><version>4.2.0.Final</version><scope>import</scope><type>pom</type></dependency></dependencies></dependencyManagement>
這會將Java EE 6和RichFaces的物料清單(BOM)添加到您的項目中。 BOM會指定工件“堆棧”(或集合)的版本。 您可以從RedHat家伙那里找到任何東西,并且認為擁有它是“最佳實踐”。 最后,這可以簡化您的工作,因為它可以為您管理版本和依賴項。
關于冗長的真實依賴項列表:
<!-- Import the CDI API --><dependency><groupId>javax.enterprise</groupId><artifactId>cdi-api</artifactId><scope>provided</scope></dependency><!-- Import the JPA API --><dependency><groupId>javax.persistence</groupId><artifactId>persistence-api</artifactId><version>1.0.2</version><scope>provided</scope></dependency><!-- JSR-303 (Bean Validation) Implementation --><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>4.3.0.Final</version><scope>provided</scope><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId></exclusion></exclusions></dependency><!-- Import the JSF API --><dependency><groupId>javax.faces</groupId><artifactId>jsf-api</artifactId><version>2.1</version><scope>provided</scope></dependency><!-- Import RichFaces runtime dependencies - these will be includedas libraries in the WAR --><dependency><groupId>org.richfaces.ui</groupId><artifactId>richfaces-components-ui</artifactId></dependency><dependency><groupId>org.richfaces.core</groupId><artifactId>richfaces-core-impl</artifactId></dependency>
除了RichFaces依賴項之外,其他所有項都由運行時提供。 在這種情況下,它將是GlassFish 3.1.2.2。 如果您尚未在其他地方(settings.xml)定義它,則還應該將JBoss存儲庫添加到構建部分:
<repository><id>jboss-public-repository-group</id><name>JBoss Public Maven Repository Group</name><url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url></repository>
復制source-zip的richfaces-validation目錄的內容,或從github中檢出它 。 請多加注意,不要弄亂我們創建的pom.xml;)構建它并部署這些東西。
問題
首先,您會得到一個很好的焊接信息:
WELD-000054 Producers cannot produce non-serializable instances for injection into non-transient fields of passivating beans [...] Producer Method [Logger] with qualifiers
顯然我們這里有一個問題,需要將Logger字段聲明為瞬態。
@Inject
private transient Logger logger;
不知道為什么它可以在AS7上工作,但是有一天我可能會發現它是:)下一次迭代:更改,構建,部署。
java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableSet;
看起來還不錯。 在http:// localhost:7001 / wls-cat /上啟動WLS CAT,然后嘗試查找它。

似乎Oracle正在服務器內部使用Google Magic。 好的。 我們無法將RichFaces部署為對WebLogic的獨立戰爭,因為我們需要在此處解決一些類加載問題。 推薦的方法是添加一個所謂的過濾類加載器。 您可以通過將weblogic-application.xml添加到您的耳朵來實現。 是的:讓我們重新打包所有內容,將戰爭放在空曠的耳朵中,然后將魔術添加到weblogic-application.xml中:
<prefer-application-packages><package-name>com.google.common.*</package-name></prefer-application-packages>
做完了嗎 進行另一次部署,您終于可以看到您的應用程序。 RichFaces基本上是在WebLogic上運行的,但是您必須將其打包到耳朵中,并為com.google.common。*類打開類加載器。 使用PrimeFaces可以輕松得多,但是…無論如何,有一些原因讓我嘗試這樣做。 一種是,我很喜歡能夠在客戶端觸發Bean驗證的想法。 如果看一下示例, <rich:validator event ='blur'/>會為客戶端添加針對bean驗證約束和標準jsf驗證器的客戶端驗證。 無需弄亂JavaScript或重復邏輯中的任何內容。
祝您編程愉快,別忘了分享!
參考:來自JCG合作伙伴 Markus Eisele的WebLogic 12c上的RichFaces運行在 Java軟件企業博客上。
翻譯自: https://www.javacodegeeks.com/2012/09/running-richfaces-on-weblogic-12c.html