JavaServer Faces (JSF) は、Java ベースの Web アプリケーシ ョンの開発を容易にするユーザー・インターフェース・フレームワークまた はアプリケーション・プログラミング・インターフェース (API) です。 WebSphere Application Server バージョン 6.0 は JavaServer Faces 1.0 をランタイム・レベルでサポートしています。このため、JSF を使用すると、ランタイム・バイナリーを Web アプリケーションに含める必要がなくなるため、Web アプリケーションのサイズが削減されます。
Sun JSF Reference Implementation は、WebSphere Application Server で JSF サポートに使用されるコードのファウンデーションを提供します。 ただし、オープン・ソースの API が Application Server ランタイムに組み込まれるときに 問題が起こる可能性があるため、Jakarta API への一部の依存が除去され、Application Server 固有のソリューションと置換されています。 例えば、Application Server ランタイムに組み込まれると、 これらのオープン・ソースの API は Application Server 内にインストールされたすべてのアプリケーションで使用可能なため、 バージョン管理、サポート、および法的な問題を引き起こします。 Application Server によって提供されるバージョンの JSF ランタイムは、 標準のランタイム・ライブラリーのロケーションにあり、 JSF API を活用するすべての Web アプリケーションに使用可能です。 JSF サーブレットのロードは、 ランタイムが Web アプリケーションでパッケージされるのと同じ方法で機能します。
JSF の仕様関連クラス (javax.faces.*) は、 jsf-api.jar という名の Java アーカイブ (JAR) ファイ ルにパッケージされています。JSF Sun Reference Implementation の IBM 修正バージョンは、 ws-jsf.jar という名の JAR ファイルにパッケージされています。 JavaServer Pages 標準タグ・ライブラリー (JSTL) への依存関係は、 その JAR ファイル (jstl.jar および standard.jar) が使用可能であることが必要なため、 これらの JAR ファイルは Application Server ランタイムで使用可能である必要があります。 jstl.jar および standard.jar ファイルは、 WebSphere Application Server インストール・イメージの lib ディレクトリーにあります。JSF JAR ファイルは、 標準 Application Server ランタイム・ディレクトリーにコピーする必要があります。
通常、この API/Framework を活用する Web アプリケーションは、JSF API およびインプリメンテーション JAR ファイルを Web アーカイブ (WAR) フ ァイル内に組み込みます。 この組み込みは、 これらの Web アプリケーションが WebSphere Application Server 内でデプロイおよび実行される場合には、 必要ありません。 必要となるのは、これらの JAR を、 WAR ファイルからのすべての JSTL JAR ファイルと共に除去することのみです。
Web アプリケーションが、内部に組み込まれた JSF または JSTL の独自の バージョンの使用を必要とする場合は、Web アプリケーションのクラス・ローダー・モードを変更してもかまいません。 デフォルトでは、これは PARENT_FIRST モードに設定されています。 この値を PARENT_LAST に変更すると、 JSF または JSTL クラスの Web アプリケーションを WebSphere の前にロードすることができます。
Sun Reference Implementation は、 Mozilla からのユーティリティー・クラスを使用し、メソッド・パラメータ ーに対してアサーション・スタイル呼び出しを実行します。 faces assert クラスは同等の機能を提供します。JDK 1.4 で使用可能なアサーション機能 を利用するというオプションは、 アサーション・コード・サポートをオンにするために JVM レベル・パラメー ターを提供する必要性があるため可能ではありません。 FacesAssert クラスには、静的メソッドのみがあり、ライフ・サイクルはありません。
FacesAssert |
+ notEmpty ( [in] str : String ) : boolean |
+ nonNull ( [in] isNull : Object ) : boolean |
+ wsAssert ( [in] message : String ) : boolean |
+ wsAssert ([in] argument : boolean , [in] message : String ) : boolean |
FacesBeanUtils クラスは、 Jakarta Commons BeanUtils API で使用されるメソッドのために静的メソッド置換を提供します。FacesBeanUtils クラスにはライフ・サイクルはありません。
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 |
JavaServer Faces の Sun Reference Implementation は、 Jakarta Commons Digester API を使用して、Faces 構成ファイルを構文解析 します。 XML SAX ベースのパーサーは、Application Server に提供されます。Digester コードは、 リフレクション・コードを使用して、 その構文解析を実行します。これは、大容量の構成ファイルを構文解析すると、非常 に遅くなります。 下の図の FaceConfigParser クラスは、Faces 構成 DTD に書き込まれるカ スタムであるため、大容量の構成ファイルをより速く構文解析します。