【问题标题】:What is the correct way to upgrade JSF library in TomEE 7 Plume?在 TomEE 7 Plume 中升级 JSF 库的正确方法是什么?
【发布时间】:2016-07-18 15:24:20
【问题描述】:

我看到 Mojarra 2.3 于 6 月发布。升级的正确方法是什么?

  • 在我的 pom.xml 中?基本上我只有的地方

    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId> 
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
    
  • 或者在我的服务器中?我使用的是 TomEE 7 羽流,所以我应该手动下载 JAR,删除lib/tomee-mojarra-7.0.0.jar(即JSF 2.2 compliant)并将新的 JAR 放在那里吗?实际上我不确定这是否合适,所以我担心会告诉等到 TomEE 更新其库的答案。

【问题讨论】:

    标签: jsf updates apache-tomee tomee-7


    【解决方案1】:

    JSF 2.3 尚未发布。最终版本与 Java EE 8 一起计划于 2017 年上半年发布。也许您指的是一个里程碑(测试版)版本,它应该可以通过文件名中的 mXX 后缀来识别,例如 javax.faces-2.3.0-m06.jarcurrent一。 JSF 2.3 目前仍在进行中。例如。 @Inject FacesContext 等 JSF 工件的 CDI 生产者仅在 m04 中添加,新 JSF 2.3 &lt;f:websocket&gt; 仅在 m05 中添加,新 JSF 2.3 &lt;h:commandScript&gt; 仅在 m06 中添加,以及即将推出的 @987654337 @ 将包括新的&lt;f:importConstants&gt;。以此类推。

    基本上,您需要等待 Java EE 8 发布并且您的服务器供应商提供与 Java EE 8 兼容的服务器。如果是 TomEE,那将是虚构的未来 TomEE 8 版本。在这种情况下,您可以简单地升级服务器并将pom.xml中的Java EE版本更新为8.0

    但也可以在服务器中手动升级 Mojarra。如何做到这一点取决于所使用的服务器。对于 TomEE 7.0.1 Plume,理论上应该是用较新的文件替换现有的 /lib/javax.faces-2.2.12.jar 文件。从理论上讲,因为当我尝试它时,OpenWebBeans 似乎不喜欢它。部署启用 JSF 的项目时出现以下异常(只是一个空的 WAR,带有一个空的 faces-config.xml 文件)。

    java.lang.NullPointerException
        at java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1011)
        at java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:1006)
        at org.apache.webbeans.portable.AnnotatedElementFactory.setAnnotatedType(AnnotatedElementFactory.java:154)
        at org.apache.webbeans.container.BeanManagerImpl.addAdditionalAnnotatedType(BeanManagerImpl.java:1292)
        at org.apache.webbeans.portable.events.discovery.BeforeBeanDiscoveryImpl.addAnnotatedType(BeforeBeanDiscoveryImpl.java:134)
        at com.sun.faces.cdi.CdiExtension.beforeBean(CdiExtension.java:95)
        ... 29 more
    

    似乎需要做更多的工作才能确定这是 OWB 还是 Mojarra 中的问题。到目前为止,Mojarra 的 CDI 功能仅使用 Weld 进行了测试(在 GlassFish/Payara 和 WildFly 中)。目前,很遗憾,您还不能在 TomEE 7 上使用 JSF 2.3。

    请注意,在这种情况下,无需编辑pom.xml。只有为了在 IDE 中调试期间自动附加正确的源,您需要显式添加所需的坐标,并将目标范围设置为 provided

    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.faces</artifactId>
        <version>2.3.0-m06</version>
        <scope>provided</scope>
    </dependency>
    

    这仍然适用于任何 Mojarra 版本。

    另见:

    【讨论】:

    • 一如既往,这是一个很好的答案,完整且具有指导意义。非常感谢您的帮助和贡献!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 2019-05-29
    • 2013-08-25
    相关资源
    最近更新 更多