第6章 Seam コンポーネントの構成

Seam では XML ベースの設定の必要性を最小限に抑えることを目的としています。 ただし、 XML を使って Seam を設定したいという理由はさまざまです。 Java コードからデプロイメント固有の情報を切り離したい、 再利用可能なフレームワークを作成可能にしたい、 Seam 組み込み機能を構成したい等の理由です。 Seam はコンポーネントの設定に対して 2 つのアプローチを提供します。 プロパティファイルまたは web.xml でのプロパティ設定によるコンポーネントの設定と components.xml によるコンポーネントの設定です。

6.1. プロパティ設定によるコンポーネントの構成

(システムプロパティの) サーブレットコンテキストパラメータ、またはクラスパスのルートにある seam.properties プロパティファイルのいずれかを持つ設定プロパティを Seam に与えることができます。
設定可能な Seam コンポーネントは設定可能な属性の JavaBeans スタイルのプロパティ setter メソッドを公開しなければなりません。 つまり、 com.jboss.myapp.settings という名前の Seam コンポーネントに setLocale() という setter メソッドがある場合、 次のいずれかを与えることができます。
  • seam.properties ファイル内に com.jboss.myapp.settings.locale という名前のプロパティを与えることができます。
  • 起動時に -Dorg.jboss.seam.properties.com.jboss.myapp.settings.locale という名前のシステムプロパティを与えることができます。
  • または、 サーブレットコンテキストパラメータとして同じシステムプロパティを与えることができます。
これらのいずれもクラスパスのルートで locale 属性値を設定します。
同じメカニズムが Seam 自体の設定にも使われます。 たとえば、 対話のタイムアウトを設定するには、 org.jboss.seam.core.manager.conversationTimeout の値を web.xml または seam.properties 内に与えるか、 org.jboss.seam.properties が先頭に付いたシステムプロパティで与えます。 (setConversationTimeout() という setter メソッドを持つ org.jboss.seam.core.manager という名前の組み込み Seam コンポーネントがあります。)