JavaServer Faces
JSF(JavaServer Faces)는 Java™ 웹 애플리케이션을 쉽게 개발하도록 하는 사용자 인터페이스 프레임워크 또는 API(Application Programming Interface)입니다.
- 재사용 가능한 사용자 인터페이스 컴포넌트 세트에서 사용자 인터페이스를 쉽게 구성합니다.
- 사용자 인터페이스로(부터) 애플리케이션 데이터의 마이그레이션을 단순화합니다.
- 서버 요청에서 사용자 인터페이스 상태를 관리합니다.
- 클라이언트 생성 이벤트를 서버 측 애플리케이션 코드에 연결하기 위한 단순 모델을 제공합니다.
- 빌드 및 재사용을 위한 사용자 정의 사용자 인터페이스 컴포넌트를 지원합니다.
Apache MyFaces 구현은 WebSphere Application Server에 포함되어 있으며 JSF 지원에 사용된 코드의 기반을 제공합니다.
제품에 포함된 JSF 런타임의 버전은 일반 런타임 라이브러리 위치에 있으며 JSF API를 사용하는 모든 웹 애플리케이션에 사용 가능합니다. JSF 서블릿 로딩은 런타임이 웹 애플리케이션으로 패키지된 것처럼 동작합니다. 번들된 버전은 기본 제공 어노테이션 스캔 및 WebSphere Application Server의 기타 런타임 컴포넌트와의 더 나은 통합을 위한 개선사항을 포함합니다.
JSF 및 Apache MyFaces JSF 구현의 IBM® 수정된 버전에 대한 스펙 관련 클래스 javax.faces.*가 런타임에 패키지됩니다.
일반적으로 이 API/Framework를 사용하는 웹 애플리케이션은 JSF API 및 WAR(web Application archive) 파일 내 구현 JAR(Java archive) 파일을 임베드합니다. 웹 애플리케이션이 WebSphere Application Server 내에 배치되고 실행되면 필요하지 않습니다. WAR 파일의 JSTL JAR 파일과 함께 이 JAR 파일만 제거하면 됩니다. 그러나 JavaServer Faces 2.2는 Java EE(Java Platform, Enterprise Edition) 플랫폼의 일부이기 때문에, Java EE 기술을 준수한 웹 컨테이너에서 실행되면 웹 애플리케이션은 JavaServer Faces 구현을 번들하지 않습니다. JavaServer Faces 구현이 웹 애플리케이션과 함께 번들되면, 플랫폼에서 제공된 JavaServer Faces 구현이 항상 우선하므로 무시됩니다.
FacesConfig 초기화는 초기화 중에 각 JSF 모듈에 대해 단일 클래스 로더가 필요하기 때문에 WebSphere Application Server용 JSF 런타임은 전체 애플리케이션에 대해 단일 클래스 로더 사용을 지원하지 않습니다. 애플리케이션이 다중 웹 모듈을 포함하고 그 모듈 중 하나가 JSF 모듈인 경우 이 지원을 사용할 수 없습니다. 그러므로, 애플리케이션이 다중 웹 모듈 및 적어도 하나의 JSF 모듈을 포함하면 다중 클래스 로더를 사용해야 합니다.
JSF의 다른 구현을 사용하려면, WebSphere Application Server JSF 엔진은 SUN RI 또는 Apache MyFaces가 애플리케이션 서버 런타임에서 사용되는지를 판별합니다. JSF 엔진이 사용된 구현을 판별한 후 올바른 리스너 클래스가 웹 컨테이너에 등록됩니다. com.sun.faces.ConfigureListener 또는 org.apache.myfaces.StartupConfigureListener를 web.xml 파일에 추가하지 않아도 됩니다.
제품에 포함되지 않는 써드파티 JSF 구현을 사용하려면, MyFaces로 설정된 구성을 그대로 두고 써드파티 리스너를 필요한 web.xml 파일에 추가하십시오. 그런 다음 써드파티 구현 JAR 파일을 웹 모듈에 분리된 공유 라이브러리로 추가하십시오. 분리된 공유 라이브러리를 사용하면, JSF 또는 JSTL 클래스의 웹 애플리케이션 버전은 Application Server 전에 로드됩니다.