第21章 Jakarta Server Faces 設定
21.1. Jakarta Server Faces の複数の Jakarta Server Faces 実装
jsf
サブシステムでは、複数の Jakarta Server Faces 実装を同じ JBoss EAP サーバーインスタンスにインストールできます。Jakarta Server Faces 仕様 2.3 以降を実装する Sun Mojarra または Apache MyFaces のバージョンをインストールできます。
21.1.1. Jakarta Server Faces 実装のインストール
以下の手順は、新しい Jakarta Server Faces 実装を手作業でインストールし、デフォルトの実装にする方法になります。
Jakarta Server Faces 実装 JAR ファイルの追加
Jakarta Server Faces 実装の
EAP_HOME/modules/
ディレクトリーに適切なディレクトリー構造を作成します。$ cd EAP_HOME/modules/ $ mkdir -p com/sun/jsf-impl/IMPL_NAME-VERSION
注記たとえば、
IMPL_NAME-VERSION
を、Jakarta Server Faces 仕様 2.3 以降をサポートする Mojarra のバージョンに置き換えます。-
Jakarta Server Faces 実装 JAR ファイルを
IMPL_NAME-VERSION/
サブディレクトリーにコピーします。 -
IMPL_NAME-VERSION/
サブディレクトリーで、この Mojarra テンプレート またはこの MyFaces テンプレート と似たmodule.xml
ファイルを作成します。テンプレートを使用する場合は、置き換え可能な変数に適切な値を適用してください。
Jakarta Server Faces API JAR ファイルの追加
Jakarta Server Faces 実装の
EAP_HOME/modules/
ディレクトリーに適切なディレクトリー構造を作成します。$ cd EAP_HOME/modules/ $ mkdir -p javax/faces/api/IMPL_NAME-VERSION
-
Jakarta Server Faces API JAR ファイルを
IMPL_NAME-VERSION/
サブディレクトリーにコピーします。 -
IMPL_NAME-VERSION/
サブディレクトリーで、この Mojarra テンプレート またはこの MyFaces テンプレート と似たmodule.xml
ファイルを作成します。テンプレートを使用する場合は、置き換え可能な変数に適切な値を適用してください。
Jakarta Server Faces インジェクション JAR ファイルの追加
Jakarta Server Faces 実装の
EAP_HOME/modules/
ディレクトリーに適切なディレクトリー構造を作成します。$ cd EAP_HOME/modules/ $ mkdir -p org/jboss/as/jsf-injection/IMPL_NAME-VERSION
Patching and Upgrading ガイドの指示に従い、お使いの JBoss EAP インスタンスの最新の累積パッチをダウンロードします。次に、以下のいずれかの手順を実行します。
-
パッチ更新をサーバーに適用していない場合は、
EAP_HOME/modules/system/layers/base/org/jboss/as/jsf-injection/main/
からIMPL_NAME-VERSION/
サブディレクトリーにwildfly-jsf-injection
とweld-core-jsf
JAR ファイルをコピーします。 -
パッチ更新をサーバーに適用した場合は、最新のパッチ更新ディレクトリーから
IMPL_NAME-VERSION/
サブディレクトリーにwildfly-jsf-injection
とweld-core-jsf
JAR ファイルをコピーします。たとえば、EAP_HOME/modules/system/layers/base/.overlays/layer-base-jboss-eap-7.3.z.CP/org/jboss/as/jsf-injection
などです。z は最新のバージョン番号です。
-
パッチ更新をサーバーに適用していない場合は、
-
IMPL_NAME-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 ファイルを作成します。テンプレートを使用する場合は、置き換え可能な変数に適切な値を適用してください。
デフォルトの Jakarta Server Faces 実装の設定
以下の管理 CLI コマンドを実行して、新しい Jakarta Server Faces 実装をデフォルト実装として設定します。
/subsystem=jsf:write-attribute(name=default-jsf-impl-slot,value=IMPL_NAME-VERSION)
- JBoss EAP サーバーを再起動し、変更を反映します。
21.1.2. マルチ Jakarta Server Faces 実装サポート
JBoss EAP 7.3 には、単一の Jakarta Server Faces 実装である Mojarra をベースとした Jakarta Server Faces 2.3 実装が含まれています。
マルチ Jakarta Server Faces を使用すると、複数の Jakarta Server Faces 実装およびバージョンを同じ JBoss EAP サーバーにインストールできます。この目的は、Jakarta Server Faces 実装、MyFaces または Mojarra のいずれか、ならびに Java EE JSF 2.1 以上、Jakarta Server Faces 2.3 以上のバージョンをすべて使用できるようにすることです。マルチ Jakarta Server Faces は、コンテナーと完全統合された実装を提供するため、より効率的なアノテーション処理、ライフサイクル処理、およびその他の統合の利点を実現できます。
21.1.2.1. マルチ Jakarta Server Faces 実装の仕組み
各 Jakarta Server Faces バージョンごとに新しいスロットが com.sun.jsf-impl
、javax.faces.api
、および org.jboss.as.jsf-injection
下のモジュールパスに作成されることで、マルチ Jakarta Server Faces は機能します。jsf
サブシステムが開始されると、モジュールパスをスキャンしてインストールされた Jakarta Server Faces 実装をすべて見つけます。jsf
サブシステムが指定されたコンテキストパラメーターが含まれる web アプリケーションをデプロイすると、スロットが作成されたモジュールをデプロイメントに追加します。
たとえば、MyFaces 2.2.12 がサーバー上にインストールされていることを仮定して、Jakarta Server Faces アプリケーションは 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>
21.1.2.2. デフォルトの Jakarta Server Faces 実装の変更
マルチ Jakarta Server Faces 機能では、jsf
サブシステムに default-jsf-impl-slot
属性が含まれています。この属性を使用すると、以下の手順のようにデフォルトの Jakarta Server Faces 実装を変更することができます。
write-attribute
コマンドを使用して、default-jsf-impl-slot
属性の値をアクティブな Jakarta Server Faces 実装の 1 つに設定します。/subsystem=jsf:write-attribute(name=default-jsf-impl-slot,value=JSF_IMPLEMENTATION)
変更を反映するために、JBoss EAP サーバーを再起動します。
reload
インストールされている Jakarta Server Faces 実装を確認するには、list-active-jsf-impls
操作を実行します。
/subsystem=jsf:list-active-jsf-impls { "outcome" => "success", "result" => [ "myfaces-2.1.12", "mojarra-2.2.0-m05", "main" ] }