2017-05-24 24 views
0

원본 mojarra 구현의 알려진 버그로 인해 JSF 구현을 WAR 파일에 번들해야합니다.JSF1051에서 Payara 용 WAR의 JSF 묶음 GlassFishInjectionProvider가 DiscoverableInjectionProvider를 확장하지 않음

모듈의 JSF 구현을 바꿀 수 없으므로 useBundledJsf 속성을 사용하고 있습니다.

Running Payara 버전 : Payara Server 4.1.1.164 #badassfish (빌드 28) 이 버전은 useBundledJsf를 올바르게 지원해야합니다.

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

나는 다음과 같은 오류 모든 주사를 얻고있다 : 실행 종속 내 치어에

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

과 javax.faces 추가 :

내 글래스 피쉬 - web.xml에 이것을 추가 실패하고있다.

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

이 Payara 서버에서 쉽게 171 어를 만들기 위해 추가 기능이 있습니다 특히 이러한 시나리오가 제대로 작동하도록 추가되었습니다. 문서에서

:

그것은 배포 된 응용 프로그램의 클래스 로딩 위임에 극단적 인 분리 레벨을 구성 할 수 있습니다. 이러한 극단적 인 격리 동작을 통해 배포 된 응용 프로그램은 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 구아바 라이브러리 만 허용합니다. 힌트에 대한

Extreme Classloading Isolation

+0

감사합니다,하지만 난 여기에 화이트리스트해야하는지 모르겠습니다. Facelets에서 사용하는 모든 패키지는 이미 허용 목록에 포함되어 있습니다 (기본값 허용 목록 클래스). com.sun, javax 및 org.glassfish 오류 메시지의 패키지. 여전히 JSF를 외부로로드하려고 시도하지만 오류가 여전히 발생합니다. – tak3shi