3.3.4 アプリケーションサーバのほかの機能との関連

ここでは,JSFおよびJSTLとアプリケーションサーバのほかの機能との関連について説明します。

JSFまたはJSTLとあわせて利用する場合に,留意する必要がある機能を次の表に示します。

表3-3 JSFまたはJSTLと合わせて利用する場合に留意する必要がある機能

項番機能機能についての参照先
1明示管理ヒープ機能マニュアル「機能解説 拡張編」の「8. 明示管理ヒープ機能を使用したFullGCの抑止」
2セッションフェイルオーバ機能マニュアル「機能解説 拡張編」の「5.2 セッションフェイルオーバ機能の概要」
3リデプロイ機能とリロード機能マニュアル「機能解説 基本・開発編(コンテナ共通機能)」の「13. J2EEアプリケーションの形式とデプロイ」
4JSP事前コンパイル機能2.5 JSP事前コンパイル機能とコンパイル結果の保持
5J2EEリソースへの別名付与(ユーザ指定名前空間機能)マニュアル「機能解説 基本・開発編(コンテナ共通機能)」の「2. ネーミング管理」

注 マニュアル名の「アプリケーションサーバ」は省略しています。


以降,JSFおよびJSTLと各機能との関連について説明します。

<この項の構成>
(1) 明示管理ヒープ機能
(2) セッションフェイルオーバ機能
(3) リデプロイ機能とリロード機能
(4) JSP事前コンパイル機能
(5) J2EEリソースへの別名付与(ユーザ指定名前空間機能)

(1) 明示管理ヒープ機能

JSFでは,ユーザが作成したFaceletsファイルやJSPファイルを基に生成された次の情報およびオブジェクトを,HTTPセッションに登録します。

これらの情報およびオブジェクトは,ほかのWebアプリケーションと同様に,明示管理ヒープ機能を使用して管理できます。

ただし,情報およびオブジェクトがHTTPセッションに登録されるかどうかには条件があります。また,HTTPセッションに登録されるすべての情報が明示管理ヒープを使用して管理されるわけではありません。HTTPセッションに情報またはオブジェクトが登録される条件と,それらの情報またはオブジェクトが明示管理ヒープ機能を使用して管理されるかどうかを次の表に示します。

表3-4 HTTPセッションに情報またはオブジェクトが登録される条件

情報またはオブジェクトHTTPセッションに登録される条件明示管理ヒープ機能を使用して管理されるかどうか
UIComponentのビュー情報(テキストフィールド,ラジオボタン,サブミットボタンなどのユーザとの入出力インターフェースを構成するビューの情報)JSF標準コンテキストパラメタのjavax.faces.STATE_SAVING_METHODの値が「server」(デフォルト値)の場合使用しない
ManagedBeanオブジェクトSessionScopeアノテーションが指定された場合,またはfaces-config.xmlの<managed-bean-scope>に「session」を指定した場合使用する
ページで使用する文字コードHTTPセッションが生成されていた場合使用する
SessionMapに登録したオブジェクトユーザアプリケーションで使用した場合使用する

また,明示管理ヒープ機能を使用する場合,JSFアプリケーションが明示管理ヒープ領域で使用するメモリサイズの概算は,次の式を使用して算出してください。

JSFアプリケーションが明示管理ヒープ領域で使用するメモリサイズ

1セッション当たりで明示管理ヒープ領域を使用するサイズ
=(A+1) × 0.4キロバイト
+ManagedBeanオブジェクトサイズ(HTTPセッションに登録される場合)
+SeesionMapに登録した場合のオブジェクトサイズ

注※ AはJSFの論理ページの最大値を設定するプロパティ(com.sun.faces.numberOfLogicalViews)に指定した値です。デフォルトは15です。
JSFアプリケーションで明示管理ヒープ機能を使用する場合の注意事項
JSFでは,HTTPセッションの破棄(javax.servlet.http.HttpServletRequestインタフェースのinvalidateメソッド呼び出し)を実行しません。このため,ユーザアプリケーション内でHTTPセッションの破棄(javax.servlet.http.HttpServletRequestインタフェースのinvalidateメソッド呼び出し)を実行するか,または適切なセッションタイムアウトを設定してください。

(2) セッションフェイルオーバ機能

JSFがHTTPセッションに登録するオブジェクトを利用して,ほかのWebアプリケーションと同様にセッションフェイルオーバ機能を使用できます。JSF固有の設定も不要です。

JSFアプリケーションがHTTPセッションに登録するオブジェクトサイズ
セッションフェイルオーバ機能を使用する場合,JSFアプリケーションがHTTPセッションに登録するオブジェクトサイズの概算は,次の表に示す値を使用して見積もってください。

表3-5 JSFアプリケーションがHTTPセッションに登録するオブジェクトサイズ

ページメモリを使用する処理使用メモリ
Faceletsページ必須なオブジェクトと各タグ部分1.3キロバイト
一つのFormタグのページ生成部分0.2キロバイト※1
EL式を使用した場合※20.8キロバイト※3
JSPページ必須なオブジェクトと各タグ部分2.2キロバイト
一つのFormタグのページ生成部分2.0キロバイト※1
EL式を使用した場合※20.8キロバイト※3

注※1 ManagedBeanの作り方やタグのID設定などによって,多少の増減があります。

注※2 リソース数ごとに見積もってください。

注※3 リソースの作り方によって,多少の増減があります。


なお,この表で示した値は概算値です。実際にHTTPセッションで利用するメモリサイズについては,アプリケーションを実行して得られた情報を基に見積もってください。
JSFアプリケーションでセッションフェイルオーバ機能を使用する場合の注意事項
セッションフェイルオーバ機能では,HTTPセッションの属性引き継ぎ時のシリアライズ処理でシリアライズできない情報がある場合,シリアライズに失敗して,その情報は保持できません。これは,JSFアプリケーションでも同様です。次の場合,シリアライズ処理に失敗して,セッションフェイルオーバ機能は使用できません。
  • SessionScopeアノテーションが指定されているか,faces-config.xmlの<managed-bean-scope>に「session」を指定していて,ManagedBeanにシリアライズできない情報が含まれていた場合
  • SessionMapにシリアライズできない情報を登録した場合

(3) リデプロイ機能とリロード機能

リデプロイ機能について,JSFアプリケーションとして留意する点はありません。ほかのWebアプリケーションと同様に機能を使用できます。

リロード機能についても,コマンドによるリロードを実行する場合は,JSFアプリケーションとして留意する点はありません。ほかのWebアプリケーションと同様に機能を使用できます。

ただし,更新検知によるリロードについては,更新検知の対象となるファイルに次の制限があります。

JSPファイルの更新検知
ほかのWebアプリケーションの更新検知と差異はありません。
Faceletsファイルの更新検知
更新検知の対象外です。

次に,Faceletsに含まれるファイルが更新された場合に,どの範囲でリロード機能が実行されるかを示します。

表3-6 Faceletsに含まれるファイルが更新された場合のリロード機能の適用範囲

更新検知の対象ファイルリロード機能の適用範囲
appwebjsp
Faceletsファイル×××
タグファイル
ManagedBeanコンパイル結果
静的コンテンツ×××

(凡例)○:適用される ×:適用されない


クラスローダによってロードされるファイルであるサーブレットやJSPファイルは,監視対象のファイルなので,更新されたときにJ2EEサーバが更新を検知してリロードが実行されます。しかし,Faceletsファイルはクラスローダによってロードされるファイルではありません。このため,Faceletsファイルを更新しても,J2EEサーバで更新が検知されないため,リロードも実行されません。

Faceletsファイルの更新を自動的に検知して反映したい場合は,標準コンテキストパラメタにjavax.faces.FACELETS_REFRESH_PERIODを指定してください。このパラメタに定義した時間間隔でFaceletsファイルの更新状態が監視され,更新が検知されると,その内容が反映されます。ただし,この機能は展開ディレクトリ形式のアプリケーションの場合だけ有効です。

なお,Faceletsファイルのページ出力を実行したあとでFaceletsファイルを更新した場合は,次にページにアクセスした時にJSFによってFaceletsファイルの更新が検知され,KDJE59227-Iメッセージが出力されます。

(4) JSP事前コンパイル機能

JSFアプリケーション内のJSPファイルは,JSP事前コンパイル機能を使用してコンパイルできます。

ただし,cjjspcコマンドを使用してJSFアプリケーション内のJSPファイルをコンパイルする場合,-classpathオプションに使用するタグライブラリとクラスライブラリを明示的に指定する必要があります。

-classpathオプションの指定例を次に示します。

JSFアプリケーション内のJSPファイルをコンパイルする場合のcjjspcコマンドの-classpathオプションの指定例(Windowsの場合)

-classpath <Application Serverのインストールディレクトリ>/CC/lib/cjsf.jar ; <Application Serverのインストールディレクトリ>/CC/lib/cjstl.jar

(5) J2EEリソースへの別名付与(ユーザ指定名前空間機能)

JSTLでは,J2EEリソースの別名は使用できません。

JSTLの<sql:setDataSource>タグのdatasource属性には,java:comp/envからの相対パスを指定してください。