如何在 JBoss 服务器中升级 Mojarra 并告诉它使用给定的 Mojarra 2.x JAR 而不是 JBoss 自己的jboss-jsf-api_2.1_spec-2.0.1.Final.jar
,如启动日志中所示?
如果这是相关的,我目前正在使用 JBoss AS 7.1。
以下过程适用于JBoss AS 7.2+、JBoss EAP 6.1+和JBoss WildFly 8+,并假设您完全控制了服务器的安装和配置。这将升级服务器范围的默认JSF 版本:
javax.faces.jar
文件)。当前最新的 2.1.x 版本是 2.1.29,当前最新的 2.2.x 版本是 2.2.14。假设您要升级到 2.2.x。您可以从他们的 Maven 存储库中单独下载它们:
/modules/system/layers/base/javax/faces/api/main
:
jsf-api-2.2.14.jar
文件放在那里。module.xml
文件并编辑<resource-root>
以指定新文件名,如<resource-root path="jsf-api-2.2.14.jar"/>
/modules/system/layers/base/com/sun/jsf-impl/main
:
jsf-impl-2.2.14.jar
文件放在那里。module.xml
文件并编辑<resource-root>
以指定新文件名,如<resource-root path="jsf-impl-2.2.14.jar"/>
/standalone/data
(当然,自定义数据文件夹除外,例如包含上传文件的文件夹)/standalone/deployments
/standalone/tmp
相同的过程适用于JBoss AS 7.0/7.1和JBoss EAP 6.0,您只需要浏览/modules/*
而不是/modules/system/layers/base/*
,并且您需要显式删除.index
那里的旧文件,如果有的话(JBoss 将自动创建一个)。此外,如果module.xml
in API 文件夹<module name="com.sun.jsf-impl"/>
在里面丢失<dependencies>
,那么您需要手动添加它。
重要说明是 Mojarra 2.2.x 版本早于 2.2.7 将在部署期间在 AS/EAP 中失败,但以下异常:org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type javax.faces.flow.builder.FlowDefinition
. 然后,您基本上有 2 个选择:降级到 Mojarra 2.1.x,或升级到至少 2.2.7 或更高版本。
如果您想升级到Mojarra 2.3,它不再在 Maven 上提供 2-JAR 变体,您需要javax.faces.jar
按照以下过程基于文件手动创建 2-JAR 变体:如何安装一个WildFly 上 JSF (javax.faces.jar) 的 jar 变体。