第 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 文件
在
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 版本。-
将 Jakarta 服务器 Faces 实施 JAR 文件复制到
IMPL_NAME-VERSION/
子目录中。 -
在
IMPL_NAME-VERSION/
子目录中,创建一个与这个 Mojarra 模板或 MyFaces 模板 类似的module.xml
文件。如果使用模板,请务必对记下的可替换变量使用适当的值。
添加 Jakarta Server Faces API JAR 文件
在
EAP_HOME/modules/
目录中为 Jakarta Server Faces 实施创建适当的目录结构:$ 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 Injection JAR 文件
在
EAP_HOME/modules/
目录中为 Jakarta Server Faces 实施创建适当的目录结构:$ cd EAP_HOME/modules/ $ mkdir -p org/jboss/as/jsf-injection/IMPL_NAME-VERSION
按照补丁和升级指南中所述,下载 JBoss EAP 实例的最新累积修补程序。接下来,完成以下步骤之一:
-
如果您尚未将补丁更新应用到服务器,然后将
wildfly-jsf-injection 和
JAR 文件从weld-
core-jsfEAP_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 是最新版本的版本号。
-
如果您尚未将补丁更新应用到服务器,然后将
-
在
IMPL_NAME-VERSION/
子目录中,创建一个与这个 Mojarra 模板或 MyFaces 模板 类似的module.xml
文件。如果使用模板,请务必对记下的可替换变量使用适当的值。
为 MyFaces 添加 commons-digester JAR 文件
在
EAP_HOME/modules/
目录中为commons-digester
JAR 创建适当的目录结构:$ 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 服务器 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
属性。此属性允许您更改默认的 Jakarta Server Faces 实现,如下流程所述:
子系统
中包含 default-jsf-impl-slot
使用
write-attribute
命令将default-jsf-impl-slot
属性的值设置为活跃的 Jakarta Server Faces 实施之一:/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" ] }