第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 ファイルの追加
  1. 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 のバージョンに置き換えます。

  2. Jakarta Server Faces 実装 JAR ファイルを IMPL_NAME-VERSION/ サブディレクトリーにコピーします。
  3. IMPL_NAME-VERSION/ サブディレクトリーで、この Mojarra テンプレート またはこの MyFaces テンプレート と似た module.xml ファイルを作成します。テンプレートを使用する場合は、置き換え可能な変数に適切な値を適用してください。
Jakarta Server Faces API JAR ファイルの追加
  1. Jakarta Server Faces 実装の EAP_HOME/modules/ ディレクトリーに適切なディレクトリー構造を作成します。

    $ cd EAP_HOME/modules/
    $ mkdir -p javax/faces/api/IMPL_NAME-VERSION
  2. Jakarta Server Faces API JAR ファイルを IMPL_NAME-VERSION/ サブディレクトリーにコピーします。
  3. IMPL_NAME-VERSION/ サブディレクトリーで、この Mojarra テンプレート またはこの MyFaces テンプレート と似た module.xml ファイルを作成します。テンプレートを使用する場合は、置き換え可能な変数に適切な値を適用してください。
Jakarta Server Faces インジェクション JAR ファイルの追加
  1. Jakarta Server Faces 実装の EAP_HOME/modules/ ディレクトリーに適切なディレクトリー構造を作成します。

    $ cd EAP_HOME/modules/
    $ mkdir -p org/jboss/as/jsf-injection/IMPL_NAME-VERSION
  2. Patching and Upgrading』ガイドの指示に従い、お使いの JBoss EAP インスタンスの最新の累積パッチをダウンロードします。次に、以下のいずれかの手順を実行します。

    • パッチ更新をサーバーに適用していない場合は、EAP_HOME/modules/system/layers/base/org/jboss/as/jsf-injection/main/ から IMPL_NAME-VERSION/ サブディレクトリーに wildfly-jsf-injectionweld-core-jsf JAR ファイルをコピーします。
    • パッチ更新をサーバーに適用した場合は、最新のパッチ更新ディレクトリーから IMPL_NAME-VERSION/ サブディレクトリーに wildfly-jsf-injectionweld-core-jsf JAR ファイルをコピーします。たとえば、EAP_HOME/modules/system/layers/base/.overlays/layer-base-jboss-eap-7.3.z.CP/org/jboss/as/jsf-injection などです。z は最新のバージョン番号です。
  3. IMPL_NAME-VERSION/ サブディレクトリーで、この Mojarra テンプレート またはこの MyFaces テンプレート と似た module.xml ファイルを作成します。テンプレートを使用する場合は、置き換え可能な変数に適切な値を適用してください。
MyFaces の commons-digester JAR ファイルの追加
  1. commons-digester JAR の EAP_HOME/modules/ ディレクトリーに適切なディレクトリー構造を作成します。

    $ cd EAP_HOME/modules/
    $ mkdir -p org/apache/commons/digester/main
  2. commons-digester JAR ファイルをダウンロードし、main/ サブディレクトリーにコピーします。
  3. main/ サブディレクトリーで、この テンプレート と似た module.xml ファイルを作成します。テンプレートを使用する場合は、置き換え可能な変数に適切な値を適用してください。
デフォルトの Jakarta Server Faces 実装の設定
  1. 以下の管理 CLI コマンドを実行して、新しい Jakarta Server Faces 実装をデフォルト実装として設定します。

    /subsystem=jsf:write-attribute(name=default-jsf-impl-slot,value=IMPL_NAME-VERSION)
  2. 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-impljavax.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 実装を変更することができます。

  1. write-attribute コマンドを使用して、default-jsf-impl-slot 属性の値をアクティブな Jakarta Server Faces 実装の 1 つに設定します。

    /subsystem=jsf:write-attribute(name=default-jsf-impl-slot,value=JSF_IMPLEMENTATION)
  2. 変更を反映するために、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"
    ]
}