2013-11-22 7 views
5

Websphere 8.5.5에 어플리케이션을 배치하려고 시도했습니다. 공유 라이브러리를 작성했습니다. myfaces 2.2 jars와 commons-collections와 같은 다른 의존성을 포함하는 Websphere.
또한 내 응용 프로그램의 클래스 로더를 PARENT_LAST로 설정했습니다. 나는 응용 프로그램을 배포 할 때
, 나는이 예외 얻을 : I가에서 MyFaces의 최신 버전을 실행보고 있었다IllegalArgumentException : com.ibm.ws.jsf.config.annotation.WASMyFacesAnnotationProvider가 org.apache.myfaces.spi.AnnotationProvider가 아님

An error occured while initializing MyFaces: Class com.ibm.ws.jsf.config.annotation.WASMyFacesAnnotationProvider is no org.apache.myfaces.spi.AnnotationProvider 
java.lang.IllegalArgumentException: Class com.ibm.ws.jsf.config.annotation.WASMyFacesAnnotationProvider is no org.apache.myfaces.spi.AnnotationProvider 
at org.apache.myfaces.shared.util.ClassUtils.buildApplicationObject(ClassUtils.java:557) 
at org.apache.myfaces.shared.util.ClassUtils.buildApplicationObject(ClassUtils.java:524) 
+0

언급 한 절차는 Mojarra 2.2에서 잘 작동합니다. jsf-api-2.2.4 및 jsf-impl-2.2.4 만 포함하는 공유 라이브러리를 사용 중입니다. –

+0

어떻게 공유 라이브러리에 연결하고 있습니까? 서버 인스턴스 나 응용 프로그램에 연결하고 있습니까? – Isaac

+0

환경/공유 라이브러리/신규 –

답변

1

을 8.5.5, 그리고 비슷한 문제로 달렸다. IBM이 MyFaces의 임베디드 버전을 지원하기 위해 작성한 코드와 응용 프로그램 또는 공유 라이브러리가 제공하는 MyFaces간에 충돌이있는 것으로 보입니다.

IBM은이 문제점을 피하는 방법을 제공합니다. WAS 8.0은 출하시 서버 제공 JSF로 "SunRI1.2"또는 "MyFaces"를 선택할 수있는 기능을 제공합니다. 기본값을 "SunRI1.2"로 설정하면 클래스 경로에서 서버 제공 MyFaces를 제거하고 개발자가 직접 제공 할 수 있습니다.

  1. 어떤 응용 프로그램을 선택
  2. 클릭 JSP 및 JSF 옵션JSF 구현 섹션에서
  3. 변경 드롭 다운 확인을 클릭
  4. SunRI1.2
  5. 구성을 저장하고 서버를 다시 시작하십시오.
+0

배포 설명자에서이를 설정하는 방법이 있습니까? 그래서 우리는 사실 후에 그것을 바꿀 필요가 없습니까? 잠재적으로 되돌릴 수 있습니까? – VeenarM

+0

응용 프로그램 설정을 통해 노출되지만 실제로는 서버 수준에 있습니다. 동일한 서버의 모든 응용 프로그램이 영향을받습니다. – rdean400

+0

그래, 그걸 알아 냈어 :) 글쎄, 좋은 일은 우리가 생산을 위해 우리 자신의 JVM을 요구하고 있다는 것이다. 왜냐하면 우리는 우리 자신이 거기에있는 것을 사용하도록 강제한다면 사람들이 화가 나 있을지도 모른다. – VeenarM