在 TomEE 7 Plume 中升级 JSF 库的正确方法是什么?
What is the correct way to upgrade JSF library in TomEE 7 Plume?
我看到 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 plume,所以我应该手动下载 JAR,删除 lib/tomee-mojarra-7.0.0.jar
(即 JSF 2.2 compliant)并将新的 JAR 放在那里吗?我实际上不确定这是否合适,所以我担心一个答案告诉我要等到 TomEE 更新它的库。
JSF 2.3 尚未发布。最终版本计划于 2017 年上半年与 Java EE 8 一起发布。也许您指的是里程碑(测试版)版本,文件名中的 mXX
后缀应该可以识别该版本,例如 javax.faces-2.3.0-m06.jar
for the current one. JSF 2.3 is currently still a work in progress. E.g. CDI producers for JSF artifacts such as @Inject FacesContext
were only added in m04
, new JSF 2.3 <f:websocket>
was only added in m05
, new JSF 2.3 <h:commandScript>
was only added in m06
和即将推出的 m07
将以新 <f:importConstants>
等为特色。等等。
基本上,您需要等待 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 版本。
另请参阅:
- How to update Mojarra version in GlassFish.
- Upgrade JSF / Mojarra in JBoss AS / EAP / WildFly.
我看到 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 plume,所以我应该手动下载 JAR,删除
lib/tomee-mojarra-7.0.0.jar
(即 JSF 2.2 compliant)并将新的 JAR 放在那里吗?我实际上不确定这是否合适,所以我担心一个答案告诉我要等到 TomEE 更新它的库。
JSF 2.3 尚未发布。最终版本计划于 2017 年上半年与 Java EE 8 一起发布。也许您指的是里程碑(测试版)版本,文件名中的 mXX
后缀应该可以识别该版本,例如 javax.faces-2.3.0-m06.jar
for the current one. JSF 2.3 is currently still a work in progress. E.g. CDI producers for JSF artifacts such as @Inject FacesContext
were only added in m04
, new JSF 2.3 <f:websocket>
was only added in m05
, new JSF 2.3 <h:commandScript>
was only added in m06
和即将推出的 m07
将以新 <f:importConstants>
等为特色。等等。
基本上,您需要等待 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 版本。
另请参阅:
- How to update Mojarra version in GlassFish.
- Upgrade JSF / Mojarra in JBoss AS / EAP / WildFly.