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 ファイルの追加
  1. 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_VERSIONmojarra-2.2.11 に置き換えます。

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

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

    $ cd EAP_HOME/modules/
    $ mkdir -p org/jboss/as/jsf-injection/JSF_IMPL_NAME-JSF_VERSION
  2. wildfly-jsf-injection および weld-core-jsf JAR ファイルを EAP_HOME/modules/system/layers/base/org/jboss/as/jsf-injection/main/ から JSF_IMPL_NAME-JSF_VERSION/ サブディレクトリーにコピーします。
  3. JSF_IMPL_NAME-JSF_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 ファイルを作成します。テンプレートを使用する場合は、置き換え可能な変数に適切な値を適用してください。
デフォルト JSF 実装の設定
  1. 以下の管理 CLI コマンドを実行して、新しい JSF 実装をデフォルト実装として設定します。

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

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

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