第 21 章 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
$ cd EAP_HOME/modules/ $ mkdir -p com/sun/jsf-impl/IMPL_NAME-VERSIONCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意例如,将
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
$ cd EAP_HOME/modules/ $ mkdir -p javax/faces/api/IMPL_NAME-VERSIONCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将 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
$ cd EAP_HOME/modules/ $ mkdir -p org/jboss/as/jsf-injection/IMPL_NAME-VERSIONCopy to Clipboard Copied! Toggle word wrap Toggle overflow 按照补丁和升级指南中所述,下载 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-jsfJAR 文件从最新的补丁更新目录复制到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-digesterJAR 创建适当的目录结构:cd EAP_HOME/modules/ mkdir -p org/apache/commons/digester/main
$ cd EAP_HOME/modules/ $ mkdir -p org/apache/commons/digester/mainCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
下载
commons-digesterJAR 文件,并将它复制到main/子目录。 -
在
main/子目录中,创建与此 模板 类似的module.xml文件。如果使用模板,请务必对记下的可替换变量使用适当的值。
设置默认 Jakarta Server Faces 实施
运行以下管理 CLI 命令,将新的 Jakarta Server Faces 实施设置为默认实施:
/subsystem=jsf:write-attribute(name=default-jsf-impl-slot,value=IMPL_NAME-VERSION)
/subsystem=jsf:write-attribute(name=default-jsf-impl-slot,value=IMPL_NAME-VERSION)Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重新启动 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>
<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)
/subsystem=jsf:write-attribute(name=default-jsf-impl-slot,value=JSF_IMPLEMENTATION)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新启动 JBoss EAP 服务器以使更改生效。
reload
reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
要查看安装了哪些 Jakarta Server Faces 实施,您可以执行 list-active-jsf-impls 操作。