2011-05-13 5 views
6

JSF 2에는 서블릿 2.5가 필요하므로 JBOSS 4.05 (Tomcat 5.5)에서는 실행되지 않습니다. 불행히도 JSF 2.0과 Primefaces를 사용하는 애플리케이션을 해당 환경에 배치해야합니다.Servlet 2.4 컨테이너에서 JSF 2.0 실행

해킹이 있습니까?

답변

12

JSF 2.0은 Servlet 2.5의 일부인 EL 2.1에 크게 의존하며 Servlet 2.4의 일부인 EL 2.0과는 달리 주요 변경 사항이지만 특정 Servlet 2.5 특정 API에 종속되지는 않습니다. Servlet 2.4는 정상적으로 작동해야합니다. 이론 상으로는 자신 만의 EL 2.1 API를 제공하고 /WEB-INF/lib에 구현하면 JSF 2.0을 Servlet 2.4에서 사용할 수 있습니다. 내가 /WEB-INF/lib에 다음 라이브러리와 톰캣 5.5.33 여기에 빠른 테스트를했다 : Tomcat 6.0.x

  • jboss-el.jar 파일의 lib 폴더에서 복사

    • el-api.jar 파일을 (EL 2.1을 구현하고 인수 메소드 호출과 같은 EL 2.2을 지원합니다)
    • jsf-api.jarjsf-impl.jarMojarra 2.0.x

    로부터 서블릿 2.4 web.xml 곳 JBoss의 EL은 선언한다 :

    <context-param>  
        <param-name>com.sun.faces.expressionFactory</param-name> 
        <param-value>org.jboss.el.ExpressionFactoryImpl</param-value> 
    </context-param> 
    

    <f:ajax>있는 버튼을 톰캣 5.5.33에 나를 위해 간단한 @ViewScoped@ManagedBean 작품 간단한 <h:form>와 간단한 JSF 2.0 Facelet (안 JSP!). JBoss 4.0.5에서 시험해보고 철저하게 테스트하십시오.

    JDK 1.4가 아니라 JDK 1.5 이상이 필요합니다. 또한 Servlet 2.5 특정 el-api.jar 파일의 존재로 인해 Servlet 3.0 컨테이너에서 응용 프로그램을 이식 할 수 없다는 점에 유의하십시오.

  • +1

    좋은 사람, 고마워! 하지만 여전히 문제가 있습니다. Primeface는 그런 접근 방식으로 작동하지 않았습니다. 오류 : 원인 : org.xml.sax.SAXException : 오류 처리 [jar : file : /HIDDEN/jboss-4.0.5.GA/server/default/./ tmp/deploy/tmp1314317090148712617primefaces-test-exp.war/WEB-INF/lib/primefaces-3.0.M2-SNAPSHOT.jar! /META-INF/[email protected],17] –

    +1

    PrimeFaces 2.x를 사용해보십시오. 3.0에는 Servlet 3.0 고유의 종속성이 있습니다. – BalusC