【问题标题】:Glassfish 4.1 - Latest Jersey versionGlassfish 4.1 - 最新泽西版本
【发布时间】:2016-06-16 14:41:38
【问题描述】:

我们希望在 Glassfish 4.1 中集成最新的 Jersey 版本。

Glassfish 提供 Jersey 2.21.0 实现,因此我们将 Jersey 2.22.2 添加到 WEB-INF/lib。它似乎可以与新版本一起使用。

但这是正确的解决方案吗? Glassfish 是否总是将 WEB-INF 中的库放在类路径之前?

【问题讨论】:

  • 可能并非如此。查看Updating Jersey 2 in GlassFish 4
  • 我不想更新 Glassfish 模块。但是 Glassfish 如何处理带有 WAR 的库/包含在 webapp 中?有没有办法在应用程序中显示 Glassfish 类路径?

标签: glassfish classpath jersey-2.0 glassfish-4


【解决方案1】:

如果修改 glassfish 安装不是一个选项,您仍然可以强制 glassfish 在全局应用程序之前考虑您的网络应用程序中的库。您只需要在您的应用程序中提供文件 glassfish-web.xml 以及 WEB-INF 中的标准 web.xml。在 glassfish-web.xml 文件的类加载器元素中设置 delegate="false"。如需更多文档,请参阅 Glassfish 部署指南,C 部分 - GlassFish Server 部署描述符的元素。

感谢 OndrejM!

【讨论】:

  • 谢谢!此修复程序使 glassfish 将我捆绑的 jackson fasterxml jar 加载到已安装的 jar 上。保罗
【解决方案2】:

最后我可以说,没有办法用更新的版本替换 Glassfish 中的 Jersey 东西。即使使用 delegate="false" 它也会更喜欢它包含的版本。在阅读部署手册时,我发现了一点通知。通知说有一些库将被修复为委托将不起作用(我认为是为了避免副作用。

【讨论】:

    【解决方案3】:

    GlassFish 会更喜欢它自己的实现而不是应用程序提供的实现。

    更换适当的 GlassFish 模块是一个可行的选择。

    另一种方法是使用 Payara Server,它源自 GlassFish,每 3 个月发布一次,因此具有更多最新模块。 The Jersey version currently in Payara Server is 2.22.1,仅比您的目标低一个小版本,可能就足够了。

    【讨论】:

    • 这是不可行的选择,因为客户运行自己的 glassfish 并且不想替换包含的库。
    • 如果不是修改 glassfish 安装的选项,您仍然可以强制 glassfish 在全局应用程序之前考虑您的 Web 应用程序中的库。您只需要在您的应用程序中提供文件 glassfish-web.xml 以及 WEB-INF 中的标准 web.xml。在 glassfish-web.xml 文件的类加载器元素中设置 delegate="false"。有关更多文档,请参阅 Glassfish 部署指南,C 部分 - GlassFish Server 部署描述符的元素。
    • 谢谢,这正是我想知道的!
    猜你喜欢
    • 2015-01-12
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多