我看到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更新其库的答案。
答案 0 :(得分:3)
JSF 2.3尚未发布。最终版本计划于2017年上半年与Java EE 8一起使用。也许您指的是里程碑(beta)版本,应该通过文件名中的mXX
后缀来识别,例如{{3} } javax.faces-2.3.0-m06.jar
一个。 JSF 2.3目前仍在进行中。例如。仅@Inject FacesContext
中添加了<f:websocket>
等JSF工件的CDI生成器,新的JSF 2.3 <h:commandScript>
仅在current中添加,新的JSF 2.3仅m07
<f:importConstants>
已添加到m04
,即将发布的pom.xml
将包含新的8.0
。等等。
基本上,您需要等待Java EE 8发布,并且您的服务器供应商提供Java EE 8兼容服务器。在TomEE的情况下,这将是虚构的未来TomEE 8版本。在这种情况下,您只需升级服务器并将/lib/javax.faces-2.2.12.jar
中的Java EE版本更新为faces-config.xml
。
然而,也可以在服务器中手动升级Mojarra。如何做到这一点取决于使用的服务器。在TomEE 7.0.1 Plume的情况下,理论上应该用更新的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
文件替换现有的pom.xml
文件。从理论上讲,因为当我尝试它时,似乎OpenWebBeans并不喜欢它。部署启用JSF的项目时,我得到了以下异常(只是一个带有空provided
文件的空WAR)。
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.3.0-m06</version>
<scope>provided</scope>
</dependency>
为了弄清楚这是OWB还是Mojarra中的问题,似乎需要做更多的工作。到目前为止,Mojarra的CDI功能仅通过Weld(在GlassFish / Payara和WildFly中)进行了测试。目前,遗憾的是,您还无法在TomEE 7上使用JSF 2.3。
请注意,在这种情况下,编辑{{1}}不是必需的。只有在IDE中调试期间自动连接适当的源时,您才需要显式添加目标范围设置为{{1}}的所需坐标。
{{1}}
这适用于任何Mojarra版本。