JavaServer Faces(JSF)は、Webアプリケーションのユーザー・インタフェースを構築できるフレームワークです。Apache Software Foundation社のMyFacesは、JSF仕様を拡張するJSFコンポーネントを提供します。MyFacesコンポーネントは、JSF 1.1リファレンス実装などのように互換性のある実装と完全互換性があります。
すべてのJSF/MyFaces Webアプリケーションの場合は、次のようになります。
JSFとMyFacesは、セッション・オブジェクトにおけるビューの状態のキャッシュを試みます。この状態データは、デフォルトではシリアライズ可能ですが、可能でない場合もあります。次に例を示します。
Coherence*Webがシリアライズ不可能なクラスのために、IllegalStateException
をレポートした際、Webアプリケーションによってセッションに配置されたすべての属性がシリアライズ可能な場合、レンダリングされたページの非表示フィールドにビューの状態を格納するようにJSF/MyFacesを構成する必要があります。
Webアプリケーションによってセッション・オブジェクトにシリアライズ不可能なオブジェクトが書き込まれる場合、coherence-preserve-attributes
コンテキスト・パラメータをtrue
に設定する必要があります。
JSFパラメータのjavax.faces.STATE_SAVING_METHOD
は、リクエスト間におけるビューの状態が格納される場所を特定します。デフォルトでは、状態はサーブレット・セッションに保存されます。web.xml
ファイルのcontext-param
行でSTATE_SAVING_METHOD
パラメータをclient
に設定し、レンダリングされたページの非表示フィールドにビュー全体の状態をJSFが格納するようにします。そのように設定しない場合、セッション・オブジェクトにシリアライズ不可能な状態のキャッシュをJSFで試みることがあります。
例9-1は、web.xml
ファイルのSTATE_SAVING_METHOD
パラメータの設定を示しています。
例9-1 web.xmlファイルのSTATE_SAVING_METHODの設定
... <context-param> <param-name>javax.faces.STATE_SAVING_METHOD</param-name> <param-value>client</param-value> </context-param> ...
MyFacesを使用する設定済アプリケーションの場合は、次のようになります。
Coherence*Web WebInstallerでMyFacesアプリケーションをデプロイする場合(設定済アプリケーションの場合)、MyFacesのバージョンに応じて追加手順の実行が必要な場合もあります。
Coherence*Web WebInstallerを使用して、1.1.nより古いバージョンのMyFacesで構築されたWebアプリケーションをデプロイする場合、追加手順を実行する必要はありません。
Coherence*Web WebInstallerを使用して、1.2.xバージョンのMyFacesで構築されたWebアプリケーションをデプロイする場合、web.xml
ファイルにorg.apache.myfaces.DELEGATE_FACES_SERVLET
コンテキスト・パラメータを追加します。このパラメータにより、デフォルトのjavax.faces.webapp.FacesServlet
のかわりにカスタム・サーブレットを指定できます。
例9-2は、web.xml
ファイルのDELEGATE_FACES_SERVLET
コンテキスト・パラメータの設定を示しています。
JSFリファレンス実装(Mojarra)を使用する設定済アプリケーションの場合は、次のようになります。
Coherence*Web WebInstallerを使用してJSFリファレンス実装(Mojarra)に基づくWebアプリケーションをデプロイしている場合、web.xml
ファイルのservlet
行でFacesServlet
クラスを宣言する必要があります。
例9-3 web.xmlファイルにおけるFaces Servletの宣言
... <servlet> <servlet-name>Faces Servlet (for loading config)</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> </servlet> ...
MyFacesおよびCoherence SPIを使用する非設定済アプリケーションの場合は、次のようになります。
Coherence SPIを使用して、MyFacesで構築されたWebアプリケーションをデプロイする場合、追加手順を実行する必要はありません。これは、Coherence*WebとともにMyFacesを実行する場合にお薦めする方法です。
JSFリファレンス実装(Mojarra)およびCoherence SPIを使用する非設定済アプリケーションの場合は、次のようになります。
Coherence SPIを使用して、JSFリファレンス実装(Mojarra)に基づくWebアプリケーションをデプロイする場合は、何も実行する必要はありません。これは、Coherence*WebとともにJSFを実行する場合にお薦めする方法です。