Java Server Faces
Java Server Faces (JSF) is a user interface framework or API that eases the development of Java based Web apps. WAS version 7.0 supports Java Server Faces 1.2 at a runtime level, therefore using JSF reduces the size of the Web app since runtime binaries no longer need to be included in the Web app.
The JSF runtime also :
- Makes it easy to construct a user interface from a set of reusable user interface components
- Simplifies migration of application data to and from the user interface
- Helps manage user interface state across server requests
- Provides a simple model for wiring client-generated events to server-side application code
- Supports custom user interface components to be build and reused
Both the SUN Reference Implementation and Apache MyFaces implementation are shipped with WAS ND.
The Sun JSF Reference Implementation provides the foundation of the code used for the JSF support in WAS. However, some dependencies on Jakarta APIs have been removed and replaced with Application Server specific solutions as a result of potential problems that may occur when open source APIs are included in the appserver runtime. For example, when included in the appserver runtime, these open source APIs are made available to all applications installed within the appserver, therefore bringing versioning, support and legal issues. The version of the JSF runtime provided by the appserver resides in the normal runtime library location and is available to all Web apps that leverage JSF APIs. The loading of the JSF servlet works in the same manner as if the runtime was packaged with the Web app.
The following open source dependencies are replaced with other APIs or in-house versions:
- Jakarta Commons BeanUtils
- Jakarta Commons Collections
- Jakarta Commons Digester
- Jakarta Commons Logging
- Mozilla Assert API
The JSF Specification requires JSPs Standard Tag Library (JSTL) as a dependency, therefore the required version of the JSTL from Jakarta is made available in the appserver runtime.
Figure 1. Current external API dependencies from the Sun based JSF runtime
Figure 2. Replacement APIs
The spec related classes (javax.faces.*) for JSF and the IBM modified version of the JSF Sun reference implementation are packaged in the appserver runtime.
Typically, Web apps that leverage this API/Framework embed the JSF API and implementation JAR files within their Web archive (WAR) file. This is not required when these Web apps are deployed and run within WAS. Only the removal of these JAR files along with any JSTL JAR files from the WAR file is required. However, because Java Server Faces 1.2 is a part of the Java EE platform, a Web app does not need to bundle a Java Server Faces implementation when it runs on a Web container that is Java EE technology compliant. If a Java Server Faces implementation is bundled with a Web app, it is ignored as theJava Server Faces implementation provided by the platform always takes precedence.
The JSF runtime for WAS does not support the use of a single class loader for the entire application. This support is not available when the application contains multiple Web modules and one of those modules is a JSF module. A single class loader for the entire application is not supported because the FacesConfig initialization requires a single class loader for each JSF module to perform the initialization. Therefore, use multiple class loaders when the application contains multiple Web modules and at least one JSF module.
For using different implementations of JSF, the WAS JSF engine determines if the SUN RI or Apache MyFaces is used from the appserver runtime. After the JSF engine determines the implementation used, the correct listener class is registered with the Web container. You not need to add the com.sun.faces.ConfigureListener or the org.apache.myfaces.StartupConfigureListener to web.xml.
To use a third party JSF implementation not shipped with WAS ND, leave the configuration set to the SUN RI, add the third party listener to web.xml that is required and add the third party implementation JAR files to the application as an isolated shared library. Using an isolated shared library, the Web app version of the JSF or JSTL classes load before the appserver.
FacesBeanUtils class
The FacesBeanUtils class provides static method replacements for methods used in the Jakarta Commons BeanUtils API. The FacesBeanUtils class has no life cycle.
FacesBeanUtils class
FacesBeanUtils + getProperty ( [in] bean : Object , [in] property : String ) : Object + getPropertyType ( [in] bean : Object , [in] property : String ) : Class + getSimpleProperty ( [in] bean : Object , [in] property : String , [in] value : Object ) + getProperty ( [in] bean : Object , [in] property : String , [in] value : Object ) + convertFromString ( [in] value : String , [in] valueClass : Class ) : Object + convert ([in] targetType : Class , [in] bean : String ) : Object
Related tasks
Set Java Server Faces implementation
Manage Java Server Faces implementations using scripting
Task overview: Deploying Web apps
Develop Web apps
Set JSF engine parameters
Related
JSF engine configuration parameters