2011-08-05 6 views
0

J2EE 5 및 Tomcat 6에서 Geronimo를 사용하며 JSF를 사용하여 하나의 간단한 페이지를 만들려고합니다. 나는 myfaces_core.tldmyfaces_html.tld의 태그 라이브러리 파일을 WEB-INF에 넣었지만 작동은하지만 Windows에서만 가능하다. 리눅스에서는 IOException으로, 알려지지 않은 이유는이었습니다. 두 개의 태그 라이브러리 파일을 제거하면 배포가 가능해졌습니다. 그런데 브라우저에서 페이지를 열 때 오류가 발생했습니다. JSP 파일의 헤더에 지정된 WEB-INF/myfaces_html.tld 파일이 누락되었습니다. MyFaces의 예에서는 MyFaces TLD가 아니라 일반적인 Sun Java TLD가 사용됩니다. URI를 WEB-INF/myfaces_html.tld으로 덮어 썼습니다. 이제는 오류가 발생합니다. 절대 URI : http://java.sun.com/jsf/html은이 응용 프로그램과 함께 배포 된 jar 파일 또는 web.xml에서 확인할 수 없습니다..JSF 초급 사용자 분실 : Linux, Geronimo 및 태그 라이브러리

나는 이제 졌어. 필자는 JSF 컴포넌트를 사용하기 위해 태그 라이브러리 설명 파일을 WAR에 넣지 않아야합니까? 이 파일들은 Geronimo Container의 MyFaces JAR 파일에 이미 포함되어 있습니다. 컨테이너는 플랫폼에 관계없이 동일한 동작을 가져야하거나 그렇지 않아도됩니까? 플랫폼에 독립적 인 간단한 응용 프로그램을 만들려면 어떻게해야합니까?

답변

1

타사 태그 라이브러리의 JAR 파일을 추출하고 느슨한 TLD 파일을 /WEB-INF 폴더에 배치해야합니다. TLD 파일은 원래 있던 JAR 파일에 보관해야하며 JAR 파일은 변경되지 않고 런타임 클래스 경로에 삭제되어야합니다. 어떤 책/튜토리얼/포럼이든 다른 방법으로 제안하는 것은 블랙리스트에 올라야합니다.

프로젝트 구조를 정리하여 느슨한 TLD 파일을 제거하고 이에 관련된 모든 변경 사항을 취소하십시오 (해당되는 경우 web.xml에도 있음).

/WEB-INF/lib 폴더에는 추상 API를 나타내는 파일 하나와 구체적인 구현을 나타내는 파일 중 하나 인 JSF를 Tomcat 6에서 실행하기위한 두 개의 파일 만 포함되어 있어야합니다.

  • 에서 MyFaces-api.jar을
  • 에서 MyFaces-IMPL : 당신은 분명히에서 MyFaces를 사용하도록 선택했습니다, 그것은 (아마도 따라 파일 이름의 끝에 버전 번호와 함께) 두 JAR 파일이 있습니다 .jar

웹 응용 프로그램의 기본 런타임 클래스 경로의 일부인 /WEB-INF/lib 폴더에 해당 파일을 놓습니다. 그게 다야. 다음 단계는 웹 앱의 web.xmlFacesServlet을 선언하고 매핑하는 것입니다.

올바른 책/학습서를 읽고 있는지 확인하십시오.

+0

Linux의 JSF-servlet에 문제가있는 것 같습니다. Windows에서 작동합니다. Geronimo는 이미 JSF 구현 (MyFaces)을 포함하고있다. TLD 파일을 제거하려면'MyF-INF' 디렉토리를 만들고 (MyFaces tutorial) JSF 표준에 따라 HTML 및 Core 라이브러리의 URI를 업데이트하십시오 (URI를'http://java.sun.com/jsf/ html'과'http : // java.sun.com/jsf/html')은 약간의 수정만으로 효과가 없습니다. 그것은 어쨌든 리눅스에서가 아니라 Windows에서 작동합니다. _unknown reason_은 Linux의 Geronimo 컨테이너, JSF 서블릿의 어딘가에있을 가능성이 큽니다. –

+0

컨테이너가 이미 JSF와 함께 제공되는 경우 실제로는 webapp에 포함시키지 않아야합니다. 그렇지 않으면 컨테이너에 번들로 제공된 JSF를로드하지 않도록 컨테이너에 지시하는 컨테이너 별 설정 파일 또는 컨텍스트 매개 변수를 지정해야합니다 라이브러리 (이것은 적어도 JBoss AS, Glassfish 등을위한 것입니다). – BalusC