本稿の最後に、(これまであまり触れてこなかった)アプリケーションの設定内容について、そのトピックを記載しよう。具体的には、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