本稿の最後に、(これまであまり触れてこなかった)アプリケーションの設定内容について、そのトピックを記載しよう。具体的には、Webアプリケーション(iceSeamGen.war)に含まれる、次の設定ファイルについて説明する。なお、EJBアプリケーション(iceSeamGen.jar)に含まれる設定ファイルについては、ICEfacesに関係しないものであるため、ここでは取り上げない。
- web.xml
- faces-config.xml
- components.xml
- pages.xml
web.xml
web.xmlは、Webアプリケーションにおける配備記述子(Deployment Descriptor)である。リスナ、フィルタ、サーブレットなどの構成や定義について記述する。
(1)リスナ
2つのリスナを設定している。1つはJBoss Seamにおいて、アプリケーション起動時にコンポーネントの初期化を実施するorg.jboss.seam.servlet.SeamListenerであり、もう1つはICEfacesにおいて、サーブレットイベントをICEfacesに伝播させるために必要なcom.icesoft.faces.util.event.servlet.ContextEventRepeaterである。これらのリスナは、ICEfaces、JBoss Seamを単独で用いる場合にも必須であるリスナである。
(2)サーブレットフィルタ
JBoss Seamの例外処理を利用するためのサーブレットフィルタを設定している。すべてのアクセスに対し、org.jboss.seam.servlet.SeamFilter(および、非推奨のフィルタクラスであるorg.jboss.seam.servlet.SeamExceptionFilter)を適用する。この設定は、JBoss Seamを単独で用いる場合にも(基本的には)必要となる。
(3)サフィックス
Faceletsを用いているため、デフォルトサフィックスとして、".xhtml"を登録している。また、com.icesoft.faces.actionURLSuffixには、ICEfaces用の(D2DViewHandler用の)URLのサフィックスを登録する。処理を表すURLのサフィックスは、JBoss Seamを用いるため、".seam"を登録している。この設定は、ICEfacesとJBoss Seamを連携させるために必要である。
(4)パラメータ
リスト8は、アプリケーションの情報を保持するのに、JSFの標準であるイベントスコープを用いるかどうかを指定している。JBoss Seamを用いる場合には、JSFの標準であるイベントスコープを用いる。JBoss Seamを用いない場合は、本設定をfalseにし、アプリケーションの情報をExternalContext(BridgeExternalContext)中のrequestMapに保持しなければならない。この設定は、ICEfacesとJBoss Seamを連携させるために必要である。
リスト8 アプリケーションの情報を保持するスコープの設定(web.xml)
<context-param>
<param-name>com.icesoft.faces.standardRequestScope</param-name>
<param-value>true</param-value>
</context-param>
リスト9は、コンポーネントツリーを保存するのに、JSFのStateManagerを用いる設定をしている。
リスト9 コンポーネントツリーの保存の設定(web.xml)
<context-param>
<param-name>com.icesoft.faces.doJSFStateManagement</param-name>
<param-value>true</param-value>
</context-param>
(5)サーブレット
登録するサーブレットについては、まず、ICEfacesを用いるために必須である、次の2つのサーブレットを設定している。
- com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet
- com.icesoft.faces.webapp.xmlhttp.BlockingServlet
また、JBoss Seamにおいては、JavaScriptからEJBを呼び出すSeam Remotingや、ロボットによる自動処理を防ぐためのCAPTCHA(キャプチャ)などを用いるために必要な、次のサーブレットを設定している。
- org.jboss.seam.servlet.ResourceServlet