7 JSFおよびMyFacesアプリケーションの操作
この章の内容は次のとおりです。
- すべてのJSFおよびMyFaces Webアプリケーションに対する構成
JSFとMyFacesは、セッション・オブジェクトにおけるビューの状態のキャッシュを試みます。 - MyFacesを使用する設定済アプリケーションに対する構成
Coherence*Web WebInstallerでMyFacesアプリケーションをデプロイする場合(設定済アプリケーションの場合)、MyFacesのバージョンに応じて追加ステップの実行が必要な場合もあります。 - Mojarraを使用する設定済アプリケーションに対する構成
Coherence*Web WebInstallerを使用してJSFリファレンス実装(Mojarra)に基づくWebアプリケーションをデプロイしている場合、web.xmlファイルのservlet行でFacesServletクラスを宣言する必要があります。
すべてのJSFおよびMyFaces Webアプリケーションに対する構成
この状態データは、デフォルトではシリアライズ可能ですが、可能でない場合もあります。たとえば:
-
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で試みることがあります。
例7-1は、web.xmlファイルのSTATE_SAVING_METHODパラメータの設定を示しています。
例7-1 web.xmlファイルのSTATE_SAVING_METHODの設定
...
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
...親トピック: JSFおよび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のかわりにカスタム・サーブレットを指定できます。例7-2は、
web.xmlファイルのDELEGATE_FACES_SERVLETコンテキスト・パラメータの設定を示しています。
例7-2 web.xmlファイルのDELEGATE_FACES_SERVLETの設定
...
<context-param>
<param-name>org.apache.myfaces.DELEGATE_FACES_SERVLET</param-name>
<param-value>com.tangosol.coherence.servlet.api23.ServletWrapper</param-value>
</context-param>
...親トピック: JSFおよびMyFacesアプリケーションの操作
Mojarraを使用する設定済アプリケーションに対する構成
web.xmlファイルのservlet行でFacesServletクラスを宣言する必要があります。例7-3 web.xmlファイルにおけるFaces Servletの宣言
...
<servlet>
<servlet-name>Faces Servlet (for loading config)</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
...親トピック: JSFおよびMyFacesアプリケーションの操作