Red Hat Training
A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform
第20章 JavaServer Faces (JSF) の設定
20.1. JavaServer Faces の複数の JSF 実装
The JavaServer Faces (JSF) サブシステムでは、複数の JSF 実装を同じ JBoss EAP サーバーインスタンスにインストールできます。特に、JSF 仕様 2.1 以上を実装するすべてのバージョンの Sun Mojarra または Apache MyFaces をインストールできます。
20.1.1. JSF 実装のインストール
以下の手順は、新しい JSF 実装を手作業でインストールし、デフォルトの実装にする方法になります。
JSF 実装 JAR ファイルの追加
JFS 実装の
EAP_HOME/modules/
ディレクトリーに適切なディレクトリー構造を作成します。$ cd EAP_HOME/modules/ $ mkdir -p com/sun/jsf-impl/JSF_IMPL_NAME-JSF_VERSION
注記たとえば、Mojarra 2.2.11 の場合は
JSF_IMPL_NAME-JSF_VERSION
をmojarra-2.2.11
に置き換えます。-
JSF 実装 JAR ファイルを
JSF_IMPL_NAME-JSF_VERSION/
サブディレクトリーにコピーします。 -
JSF_IMPL_NAME-JSF_VERSION/
サブディレクトリーで、この Mojarra テンプレート またはこの MyFaces テンプレート と似たmodule.xml
ファイルを作成します。テンプレートを使用する場合は、置き換え可能な変数に適切な値を適用してください。
JSF API JAR ファイルの追加
JFS 実装の
EAP_HOME/modules/
ディレクトリーに適切なディレクトリー構造を作成します。$ cd EAP_HOME/modules/ $ mkdir -p javax/faces/api/JSF_IMPL_NAME-JSF_VERSION
-
JSF API JAR ファイルを
JSF_IMPL_NAME-JSF_VERSION/
サブディレクトリーにコピーします。 -
JSF_IMPL_NAME-JSF_VERSION/
サブディレクトリーで、この Mojarra テンプレート またはこの MyFaces テンプレート と似たmodule.xml
ファイルを作成します。テンプレートを使用する場合は、置き換え可能な変数に適切な値を適用してください。
JSF インジェクション JAR ファイルの追加
JFS 実装の
EAP_HOME/modules/
ディレクトリーに適切なディレクトリー構造を作成します。$ cd EAP_HOME/modules/ $ mkdir -p org/jboss/as/jsf-injection/JSF_IMPL_NAME-JSF_VERSION
-
wildfly-jsf-injection
およびweld-core-jsf
JAR ファイルをEAP_HOME/modules/system/layers/base/org/jboss/as/jsf-injection/main/
からJSF_IMPL_NAME-JSF_VERSION/
サブディレクトリーにコピーします。 -
JSF_IMPL_NAME-JSF_VERSION/
サブディレクトリーで、この Mojarra テンプレート またはこの MyFaces テンプレート と似たmodule.xml
ファイルを作成します。テンプレートを使用する場合は、置き換え可能な変数に適切な値を適用してください。
MyFaces の commons-digester JAR ファイルの追加
commons-digester
JAR のEAP_HOME/modules/
ディレクトリーに適切なディレクトリー構造を作成します。$ cd EAP_HOME/modules/ $ mkdir -p org/apache/commons/digester/main
-
commons-digester
JAR ファイルをダウンロードし、main/
サブディレクトリーにコピーします。 -
main/
サブディレクトリーで、この テンプレート と似たmodule.xml
ファイルを作成します。テンプレートを使用する場合は、置き換え可能な変数に適切な値を適用してください。
デフォルト JSF 実装の設定
以下の管理 CLI コマンドを実行して、新しい JSF 実装をデフォルト実装として設定します。
/subsystem=jsf:write-attribute(name=default-jsf-impl-slot,value=JSF_IMPL_NAME-JSF_VERSION)
- JBoss EAP サーバーを再起動し、変更を反映します。
20.1.2. マルチ JSF 実装のサポート
JBoss EAP には、単一の JSF 実装である Mojarra をベースとした JSF 2.2 実装が同梱されます。
マルチ JSF は、同じ JBoss EAP サーバーで複数の JSF 実装およびバージョンのインストールを可能にします。この目的は、JSF 実装、MyFaces、および Mojarra すべてと、これらの実装の JSF 2.1 以上のバージョンをすべて使用できるようにすることです。マルチJSF は、コンテナーと完全統合された実装を提供するため、より効率的なアノテーション処理、ライフサイクル処理、およびその他の統合の利点を実現できます。
20.1.2.1. マルチ JSF 実装の仕組み
各 JSF バージョンごとに新しいスロットが com.sun.jsf-impl
、 javax.faces.api
、および org.jboss.as.jsf-injection
下のモジュールパスに作成されることで、マルチ JSF は機能します。jsf
サブシステムが開始されると、モジュールパスをスキャンしてインストールされた JSF 実装をすべて見つけます。jsf
サブシステムが指定されたコンテキストパラメーターが含まれる web アプリケーションをデプロイすると、スロットが作成されたモジュールをデプロイメントに追加します。
たとえば、MyFaces 2.2.12 がサーバー上にインストールされていることを仮定して、JSF アプリケーションは MyFaces 2.2.12 を使用すべきであることを示すには、以下のコンテキストパラメーターを追加する必要があります。
<context-param>
<param-name>org.jboss.jbossfaces.JSF_CONFIG_NAME</param-name>
<param-value>myfaces-2.2.12</param-value>
</context-param>
20.1.2.2. デフォルトの JSF 実装の変更
マルチ JSF 機能では、 jsf
サブシステムに default-jsf-impl-slot
属性が含まれています。この属性を使用すると、以下の手順のようにデフォルトの JSF 実装を変更することができます。
write-attribute
コマンドを使用して、default-jsf-impl-slot
属性の値をアクティブな JSF 実装の 1 つに設定します。/subsystem=jsf:write-attribute(name=default-jsf-impl-slot,value=JSF_IMPLEMENTATION)
変更を反映するために、JBoss EAP サーバーを再起動します。
reload
インストールされている JSF 実装を確認するには、list-active-jsf-impls
操作を実行します。
/subsystem=jsf:list-active-jsf-impls { "outcome" => "success", "result" => [ "myfaces-2.1.12", "mojarra-2.2.0-m05", "main" ] }