Oracle® Fusion Middleware Oracle Coherence*WebでのHTTPセッション・マネージメントの管理 12c (12.2.1.1) E77324-02 |
|
![]() 前 |
![]() 次 |
この章の構成は、次のとおりです。
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で試みることがあります。
例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> ...
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
のかわりにカスタム・サーブレットを指定できます。
例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> ...
Coherence*Web WebInstallerを使用してJSFリファレンス実装(Mojarra)に基づくWebアプリケーションをデプロイしている場合、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> ...