第 21 章 Jakarta Server Faces 配置

21.1. Multiiple Jakarta Server Faces 实施 Jakarta Server Faces

通过使用 jsf 子系统,您可以在相同的 JBoss EAP 服务器实例上安装多个 Jakarta 服务器 Faces 实施。您可以安装一个采用 Jakarta 服务器 Faces 规范 2.3 或更高版本的 Sun Mojarra 或 Apache MyFaces 版本。

21.1.1. 安装 Jakarta 服务器 Faces 实施

以下流程描述了如何手动安装新的 Jakarta Server Faces 实施,并使其成为默认实施。

添加 Jakarta 服务器 Faces 实施 JAR 文件
  1. EAP_HOME/modules/ 目录中为 Jakarta Server Faces 实施创建适当的目录结构:

    $ cd EAP_HOME/modules/
    $ mkdir -p com/sun/jsf-impl/IMPL_NAME-VERSION
    注意

    例如,将 IMPL_NAME-VERSION 替换为支持 Jakarta Server Faces 规格 2.3 或更高版本的 Mojarra 版本。

  2. 将 Jakarta 服务器 Faces 实施 JAR 文件复制到 IMPL_NAME-VERSION/ 子目录中。
  3. IMPL_NAME-VERSION/ 子目录中,创建一个与这个 Mojarra 模板或 MyFaces 模板 类似的 module.xml 文件。如果使用模板,请务必对记下的可替换变量使用适当的值。
添加 Jakarta Server Faces API JAR 文件
  1. EAP_HOME/modules/ 目录中为 Jakarta Server Faces 实施创建适当的目录结构:

    $ 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 Injection JAR 文件
  1. EAP_HOME/modules/ 目录中为 Jakarta Server Faces 实施创建适当的目录结构:

    $ cd EAP_HOME/modules/
    $ mkdir -p org/jboss/as/jsf-injection/IMPL_NAME-VERSION
  2. 按照补丁和升级指南中所述,下载 JBoss EAP 实例的最新累积修补程序。接下来,完成以下步骤之一:

    • 如果您尚未将补丁更新应用到服务器,然后将 wildfly-jsf-injection 和 weld- core-jsf JAR 文件从 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/ 子目录。例如,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. EAP_HOME/modules/ 目录中为 commons-digester JAR 创建适当的目录结构:

    $ 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 服务器 Faces 实施支持

JBoss EAP 7.3 随附一个 Jakarta Server Faces 实施,即 Jakarta Server Faces 2.3 实施,基于 Mojarra。

多Jakarta 服务器 Faces 允许在同一 JBoss EAP 服务器上安装多个 Jakarta 服务器 Faces 实施和版本。目标是允许使用 Jakarta Server Faces、MyFaces 或 Mojarra 以及 Java EE JSF 2.1 及更高版本中的任何版本的实施,以及 Jakarta Server Faces 2.3 及更高版本。多Jakarta 服务器 Faces 提供了与容器完全集成的一种实施,可实现更有效的注解处理、生命周期处理和其他集成优势。

21.1.2.1. Multi-Jakarta Server Faces 实施

多Jakarta 服务器 Faces 的工作方式是,对于每个 Jakarta Server Faces 版本,在 com.sun.jsf-impl、javax. faces.apiorg.jboss.as.jsf-injection 下创建一个新的插槽。当 jsf 子系统启动时,它将扫描模块路径,以查找所有已安装的 Jakarta Server Faces 实施。当 jsf 子系统部署包含指定上下文参数的 Web 应用时,它会将插槽的模块添加到部署中。

例如,若要指明 Jakarta Server Faces 应用应当使用 MyFaces 2.2.12(假设服务器上已安装了 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 服务器 Faces 实施

multi-Jakarta 服务器 Faces 功能在 jsf 子系统 中包含 default-jsf-impl-slot 属性。此属性允许您更改默认的 Jakarta Server Faces 实现,如下流程所述:

  1. 使用 write-attribute 命令将 default-jsf-impl-slot 属性的值设置为活跃的 Jakarta Server Faces 实施之一:

    /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"
    ]
}