将JBoss中的JSF/Mojarra升级为/EAP/WildFly

将JBoss中的JSF/Mojarra升级为/EAP/WildFly,jsf,jsf-2,jboss,wildfly,mojarra,Jsf,Jsf 2,Jboss,Wildfly,Mojarra,如何升级JBoss服务器中的Mojarra,并告诉它使用给定的Mojarra 2.x JARs,而不是JBoss自己的JBoss-jsf-api\u 2.1\u spec-2.0.1.Final.jar,如启动日志所示 如果相关的话,我目前正在使用JBoss AS 7.1。以下过程适用于JBoss AS 7.2+、JBoss EAP 6.1+和JBoss WildFly 8+,并假设您完全控制服务器的安装和配置。这将升级服务器范围的默认JSF版本: 下载单个Mojara和文件(因此不是单个的j

如何升级JBoss服务器中的Mojarra,并告诉它使用给定的Mojarra 2.x JARs,而不是JBoss自己的
JBoss-jsf-api\u 2.1\u spec-2.0.1.Final.jar
,如启动日志所示


如果相关的话,我目前正在使用JBoss AS 7.1。

以下过程适用于JBoss AS 7.2+JBoss EAP 6.1+JBoss WildFly 8+,并假设您完全控制服务器的安装和配置。这将升级服务器范围的默认JSF版本:

  • 下载单个Mojara和文件(因此不是单个的
    javax.faces.jar
    文件)。当前最新的2.1.x版本是2.1.29,当前最新的2.2.x版本是2.2.14。假设您想要升级到2.2.x。您可以从Maven存储库中单独下载它们:
  • 确保JBoss已关闭
  • /modules/system/layers/base/javax/faces/API/main
    中更新JSF API:
    • 删除或备份旧JAR文件(不要将其保存在同一文件夹中,甚至不要重命名!)
    • jsf-api-2.2.14.jar
      文件放入其中
    • 打开
      module.xml
      文件并编辑
      以指定新文件名,如
  • /modules/system/layers/base/com/sun/JSF impl/main
    中更新JSF impl:
    • 删除或备份旧JAR文件(不要将其保存在同一文件夹中,甚至不要重命名!)
    • jsf-impl-2.2.14.jar
      文件放入其中
    • 打开
      module.xml
      文件并编辑
      以指定新文件名,如
  • 清理JBoss缓存/工作数据,以确保没有来自以前部署的JAR的旧副本挂在那里,这可能只会与新的JAR发生冲突:
    • 垃圾处理
      /standalone/data
      的所有内容(当然,自定义数据文件夹除外,例如包含上载文件的文件夹)
    • 清除
      /standalone/deployments
    • 清除
      /standalone/tmp
  • 启动JBoss。它现在应该在所有部署中使用新的JSF版本
同样的过程也适用于JBoss AS 7.0/7.1和JBoss EAP 6.0,您只需在
/modules/*
中浏览,而不是
/modules/system/layers/base/*
,并且需要显式删除其中的旧
.index
文件(JBoss将自动创建一个)。此外,如果API文件夹中的
module.xml
未在
中找到
,则需要手动添加它

重要注意事项是,早于2.2.7的Mojarra 2.2.x版本在部署期间将在AS/EAP中失败,但出现以下异常:
org.jboss.weld.context.ContextNotActivieException:weld-001303作用域类型javax.faces.flow.builder.FlowDefinition没有活动上下文
。然后基本上有两种选择:降级到Mojarra 2.1.x,或升级到至少2.2.7或更高版本


如果您想升级到Mojarra 2.3,它在Maven上不再提供2-JAR变体,您需要根据以下步骤基于
javax.faces.JAR
文件手动创建2-JAR变量:。

我遵循了以下说明,但我在运行jboss7.1服务器时,在部署过程中遇到了严重错误::java.lang.NoClassDefFoundError:com/sun/faces/spi/InjectionProvider,有什么提示吗?我忘了提到我使用的是JSF2.2.3版本,我在CDIBean中使用了@ViewScope,因为我知道这个支持包含在JSF2.2中,我认为应该是“individual Mojarra 2.1.x”,而不是说“individual Mojarra 2.x”,因为JSF2.2需要不同的方法。2.x可能表示用户2.2。。也遵循相同的步骤。@Nambari:上述内容也适用于2.2。至少,在WildFly上,它不再有
.index
文件,并且已经有了
com.sun.jsf impl
模块条目权限。还没有在JBoss AS7/EAP6上尝试2.2。我添加了jsfi mpl模块作为依赖项。请看这里: