升级JBossAS/EAP/WildFly中的JSF/mojarra

升级JBossAS/EAP/WildFly中的JSF/mojarra

如何在JBossServer中升级mojarra,并告诉它使用给定的mojarra2.x JAR而不是JBossOnjboss-jsf-api_2.1_spec-2.0.1.Final.jar如启动日志中所示?

如果这与此相关,我目前正在使用JBoss作为7.1。


holdtom
浏览 287回答 2
2回答

慕标5832272

以下程序适用于JBOSS AS 7.2+,&nbsp;JBOSS EAP 6.1+,和JBossWildFly 8+并假定您完全控制了服务器的安装和配置。这将升级服务器范围内的服务器。违约JSF版本:下载个别的mojarraAPI和推动文件(因此不是单个javax.faces.jar档案)。当前最新2.1.x版本为2.1.29,当前最新2.2.x版本为2.2.14。让我们假设您希望升级到2.2.x。您可以从它们的Maven存储库单独下载它们:jsf-api-2.2.14.jarjsf-impl-2.2.14.jar确保JBoss关机。更新JSFAPI/modules/system/layers/base/javax/faces/api/main:删除或备份旧JAR文件(不要将其保存在同一个文件夹中,甚至不能重命名!)。放jsf-api-2.2.14.jar档案在里面。打开module.xml文件和编辑<resource-root>若要指定新文件名,请参见<resource-root path="jsf-api-2.2.14.jar"/>更新JSF/modules/system/layers/base/com/sun/jsf-impl/main:删除或备份旧JAR文件(不要将其保存在同一个文件夹中,甚至不能重命名!)。放jsf-impl-2.2.14.jar档案在里面。打开module.xml文件和编辑<resource-root>若要指定新文件名,请参见<resource-root path="jsf-impl-2.2.14.jar"/>清理JBossCache/工作数据只是为了确保没有以前部署中挂起的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将自动创建一个)。另外,如果module.xml在api文件夹中未找到<module name="com.sun.jsf-impl"/>内<dependencies>,然后您需要手动添加它。重要的注意事项是,在部署过程中,早于2.2.7的mojarra2.2.x版本将在AS/EAP中失败,但有以下例外:org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type javax.faces.flow.builder.FlowDefinition..然后,您基本上有两个选项:降级到mojarra2.1.x,或者升级到至少2.2.7或更高版本。如果你想升级到Mojarra 2.3,它不再在Maven上提供2-jar变体,您需要手动创建基于javax.faces.jar按照此过程存档:如何在WildFly上安装JSF的JAR变体(javax.faces.jar).

胡子哥哥

我遵循了这些指令,但是当我运行jboss7.1服务器时,我在部署过程中得到了错误关键错误:java.lang.NoClassDefFoundError:com/sun/Faces/SPI/InjectionProvider
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java