【问题标题】:How to update Mojarra version in GlassFish如何在 GlassFish 中更新 Mojarra 版本
【发布时间】:2012-06-02 16:41:41
【问题描述】:

我想更新我的 JSF 应用程序以使用 Mojarra 版本 2.1.8。我将这些行添加到 WAR 包的 POM 文件中:

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.faces</artifactId>
    <version>2.1.8</version>
</dependency> 

我还添加了 JSF 存储库。我的包是用 Mojarra 2.1.8 版成功构建的。但是当我打开 GlassFish 日志时,我看到部署了 Mojarra 版本 2.1.6。我错过了什么?我需要对 GlassFish 服务器进行一些配置吗?

【问题讨论】:

    标签: jsf jsf-2 glassfish upgrade mojarra


    【解决方案1】:

    GlassFish 本身已经捆绑了 JSF,默认情况下,类加载优先于 web 应用程序中捆绑的类加载。您基本上需要告诉 GlassFish 改用 webapp 捆绑的 JSF。

    编辑 webapp 的 /WEB-INF/glassfish-web.xml(或 /WEB-INF/sun-web.xml,如果您使用的是第一个 GF3 版本)添加以下两个条目:

    <class-loader delegate="false" />
    <property name="useBundledJsf" value="true" />
    

    GlassFish 将改为使用 webapp 捆绑的 JSF。

    或者,如果您对 GlassFish 拥有完全的管理员控制权,那么您也可以将其复制到 /glassfish/modules 目录中,替换旧版本,以便将其应用于所有 web 应用程序。

    【讨论】:

    • 我解决了这个问题。我下载了 JSF 2.l.8 jar 并替换了 Glassfish 中的模块。
    • 能否请您分享链接和/或用“JSF 2.1.8.jar”引用的工件的 maven 标识符,因为上述解决方案不能完全工作(解决了一些问题,但有些是剩下的)给我?!
    • @Karl: JSF homepage --> Download --> Maven
    • 真的有必要将class-loader delegate 设置为false 以将useBundledJsf 属性设置为true 吗?如果我离开 `delegate="true" 会发生什么?
    • @MathieuCastets:默认情况下,服务器提供的 API 库比 webapp 提供的 API 库具有更高的类加载优先级。 delegate="false" 基本上是反过来的。
    猜你喜欢
    • 1970-01-01
    • 2014-09-16
    • 2013-11-04
    • 2015-04-15
    • 2013-01-18
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 2015-07-16
    相关资源
    最近更新 更多