升级JSF /钻嘴鱼科到JBoss AS / EAP / WildFly升级JSF /钻嘴鱼科到JB

2019-05-08 16:12发布

我如何在JBoss服务器升级钻嘴鱼科,并告诉它使用给定的钻嘴鱼科2.x的JAR文件,而不是自己的JBoss jboss-jsf-api_2.1_spec-2.0.1.Final.jar在启动日志显示?

如果这是相关的,我目前使用JBoss AS 7.1。

Answer 1:

以下程序适用到JBoss AS 7.2+,JBoss EAP 6.1以上 ,和JBoss WildFly 8+并假定您已经在服务器的安装和配置的完全控制。 此升级服务器范围的缺省 JSF版本:

  • 下载个人钻嘴鱼科API和实现了一套文件(并因此不是单一javax.faces.jar文件)。 当前最新的2.1.x版本是2.1.29和当前最新的2.2.x版本2.2.14是。 让我们假设你想升级到2.2.x中 你可以从他们的Maven仓库单独下载它们:
    • jsf-api-2.2.14.jar
    • jsf-impl-2.2.14.jar
  • 确保JBoss是关机。
  • 更新JSF API /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 IMPL在/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"/>
  • 清理的JBoss缓存/工作数据只是为了确保有一个从先前部署挂在那里的JAR文件这将可能只与新JAR碰撞中没有旧副本:
    • 垃圾桶的所有内容/standalone/data (除了像含有上传的文件夹的自定义数据的文件夹的,当然)
    • 垃圾中的所有内容/standalone/deployments
    • 垃圾中的所有内容/standalone/tmp
  • 启动JBoss。 现在应该使用新的JSF版本的所有部署。

同样的过程适用到JBoss AS 7.0 / 7.1JBoss EAP 6.0,你只需要浏览/modules/*代替/modules/system/layers/base/* ,你需要明确地删除旧.index文件中有,如果有的话(JBoss会自动创建的一个)。 此外,如果module.xml在API夹未命中<module name="com.sun.jsf-impl"/><dependencies> ,则需要手动添加。

重要的一点是,除2.2.7旧的钻嘴鱼科的2.2.x版本将在部署期间在AS / EAP失败,以下异常: org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type javax.faces.flow.builder.FlowDefinition 。 那么你基本上2种选择:降级到钻嘴鱼科2.1.x的,或者至少升级到2.2.7或更高版本。

如果你想升级到2.3钻嘴鱼科 ,它不提供2-JAR变了Maven的,你需要手动创建2-JAR变种基于javax.faces.jar文件按照此过程: 如何在WildFly安装JSF(javax.faces.jar)的一个罐子变种 。



文章来源: Upgrade JSF / Mojarra in JBoss AS / EAP / WildFly