2017-05-24 35 views
0

由於原始mojarra實現中已知的錯誤,我需要將JSF實現綁定到WAR文件中。將PayPal中的JSF綁定到JSF1051失敗時GlassFishInjectionProvider不能擴展DiscoverableInjectionProvider

我不允許替換模塊中的JSF實現,所以我使用useBundledJsf屬性。

正在運行Payara版本:Payara Server 4.1.1.164 #badassfish(build 28) 此版本應該正確支持useBundledJsf。

我已經加入這個我GlassFish的-web.xml中:

<class-loader delegate="false" /> 
    <property name="useBundledJsf" value="true" /> 

,並添加了javax.faces dependecy到我的POM:

<dependency> 
    <groupId>org.glassfish</groupId> 
    <artifactId>javax.faces</artifactId> 
    <version>2.2.13</version> 
</dependency> 

我收到以下錯誤和所有注射正在失敗。

SEVERE: JSF1051: Service entry 'org.glassfish.faces.integration.GlassFishInjectionProvider' does not extend DiscoverableInjectionProvider. Entry will be ignored. 

我試圖在焊接integration.jar添加到我的項目,但它仍然產生JSF1051錯誤以下方式:

Unable to create a new instance of 'org.jboss.weld.jsf.ConversationAwareViewHandler' 

的焊接整合我已經使用了依賴性:

<dependency> 
<groupId>org.glassfish.main.web</groupId> 
<artifactId>weld-integration</artifactId> 
<version>4.1.2</version> 
<exclusions> 
    <exclusion> 
     <artifactId>*</artifactId> 
     <groupId>*</groupId> 
    </exclusion> 
</exclusions>  

回答

0

還有一個額外的功能,使這個在似鯖水狼牙魚服務器更容易171個WH我們特意增加了這些場景,以使這些場景正常工作。

從文檔:

這是可以配置的類加載代表團部署應用程序的一個極端的隔離級別。通過這種極端的隔離行爲,部署的應用程序可以強制服務器僅加載Payara Server上包含的屬於在其部署描述符上定義的白名單軟件包的庫中的類。

要配置白名單打包,您可以在glassfish-web.xml(WAR工件)或glassfish-application.xml(EAR工件)上使用<whitelist-package>元素。該元素可以被多次包含,以將多個包列入白名單。這裏是白名單的谷歌番石榴和傑克遜兩種封裝爲一個WAR應用的一個例子:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd"> 
<glassfish-web-app error-url=""> 
    ... 
    <whitelist-package>com.google.guava</whitelist-package> 
    <whitelist-package>com.fasterxml.jackson</whitelist-package> 
</glassfish-web-app> 

白名單語法很簡單:定義一個包含了相關類的包的名稱。例如,編寫com.google會將服務器上包含的所有Google庫列入白名單,而編寫com.google.guava則只會將Google Guava庫列入白名單。

Extreme Classloading Isolation

+0

謝謝你的提示,但我不知道我應該在這裏加入白名單。 facelets使用的所有包已經列入白名單(默認白名單類):com.sun,javax和錯誤消息org.glassfish中的包。它仍然會嘗試加載外部的JSF,並且錯誤仍然存​​在。 – tak3shi