[17.0.0.4 and later]

针对 JavaServer Faces 2.2 配置 Liberty

您可配置 Liberty 以使用 JavaServer Faces (JSF) 2.2 功能部件,它提供对 JSF 2.2 规范的全面支持。

关于此任务

Liberty JSF 实现以 MyFaces 开放式源代码实现为基础。要配置 Liberty 服务器以运行支持 JSF 2.2 的应用程序,必须设置 <jsf-2.2> 功能部件。

过程

更新 server.xml 文件以添加 <jsf-2.2> 功能部件。 例如:
<featureManager>
	<feature>jsf-2.2</feature>
</featureManager>
要点:
使用 JavaServer Faces 2.2 时,应考虑以下几点:
  • 与 JSF 2.0 功能部件不同,JSF 2.2 功能部件不会隐式装入“Bean 验证”功能部件。如果将应用程序从 JSF 2.0 迁移至 JSF 2.2,并且应用程序使用 bean 验证,那么您还必须启用 beanValidation-1.1 功能部件。
  • JSF 2.2 功能部件需要 servlet-3.1jsp-2.3el-3.0 功能部件。在 server.xml 文件中启用 JSF 2.2 功能部件时,也会启用其中每个功能部件。
  • 不能同时运行 JSF 2.2 功能部件和 Java EE 6 功能部件;例如,servlet-3.0jsp-2.2cdi-1.0 功能部件。
  • 可针对每个服务器实例在 JSF 2.0 与 JSF 2.2 功能部件实现之间进行选择,但必须考虑所有行为更改。如果所需行为仅包含在 JSF 2.2 功能部件中,那么您必须使用 JSF 2.2 功能部件。如果 JSF 2.2 功能部件中的行为更改对现有应用程序有负面影响,那么应使用 JSF 2.0 功能部件以保留该应用程序的现有行为。
  • 不能在同一 Liberty 服务器中同时使用 JSF 2.0 和 JSF 2.2 功能部件。如果同时配置两个功能部件,那么将产生错误:
    CWWKF0033E:
    不能同时装入单体功能部件 jsf-2.0 和 jsf-2.2。所配置功能部件 jsf-2.0 和 jsf-2.2 包含的一个或多个功能部件导致该冲突。您的配置不受支持;请更新 server.xml 以除去不兼容的功能部件。
  • JSF 2.2 与之前发行版(例如,JSF 2.1 和 JSF 2.0)兼容;但是,应考虑以下例外:
    • 先前版本的 JSF 规范中导致异常被允许的错误现在传播至异常处理程序。请阅读 JSF 2.2 规范的概述章节中的“与先前版本的向后兼容性”。
    • 规范中对组合组件属性 ELResolver 和组合计算机元数据的更改。请阅读 JSF 2.2 规范的概述章节中的“与先前版本的向后兼容性”。

结果

JSF 2.2 功能部件已启用,并且会在运行时装入到 Liberty 服务器中。

下一步做什么

要使用 FlowBuilder API 以创建带有 FlowBuilder 注释的流,那么需要在受管 bean 或会话 bean 类中声明相关 CDI 生产者方法。为确保 CDI 正确管理此类,请将生产者方法类定义为受管 bean(通过给予其范围)或将 CDI bean-discovery-mode 设置为 all。在 Web 归档的 beans.xml 文件中将 CDI bean-discovery-mode 设置为 all
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd" 
	bean-discovery-mode="all">
</beans>

用于指示主题类型的图标 任务主题

文件名:twlp_config_jsf22.html