如何升级JBoss服务器中的Mojarra并告诉它使用给定的Mojarra 2.x JAR而不是JBoss自己的jboss-jsf-api_2.1_spec-2.0.1.Final.jar
,如启动日志中所示?
如果这是相关的,我目前正在使用JBoss AS 7.1。
答案 0 :(得分:63)
以下程序适用于 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:
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:
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会自动创建一个)。此外,如果API文件夹中的module.xml
错过了<module name="com.sun.jsf-impl"/>
内的<dependencies>
,则需要手动添加它。
重要提示,在部署期间,早于2.2.7的Mojarra 2.2.x版本将在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变体,你需要手动创建基于2-JAR变体的2-JAR变体根据此程序javax.faces.jar
文件:How to install one jar variant of JSF (javax.faces.jar) on WildFly。