【问题标题】:Is there any way to override or update Jersey's Jackson version?有没有办法覆盖或更新泽西的杰克逊版本?
【发布时间】:2010-07-12 19:33:58
【问题描述】:

我们正在尝试使用 Jackson 1.5 来利用它提供的一些多态处理,但 Jersey 似乎带来了它自己的过时版本的 Jackson (1.1.1)。在测试 Jersey 序列化 JSON 时,我们得到的结果与在单元测试中手动序列化时不同。

{
  "id": "40",
  "ticketProps": [{
    "id": "28",
    "field": {
      "id": "28",
      "name": "WXYZ",
      "strict": "false",
      "valueType": "STRING"
    },
    "value": "W"
  }, {
    "id": "29",
    "field": {
      "id": "29",
      "name": "SEAT",
      "strict": "false",
      "valueType": "STRING"
    },
    "value": "4A"
  }]
}

{
  "id": "40",
  "ticketProps": [{
    "id": "28",
    "field": {}
  }, {
    "id": "29",
    "field": {}
  }],
  "name": null
}

很遗憾,不能使用 Jackson 1.1.1。有没有办法让泽西岛使用杰克逊 1.5?正在考虑尝试将其设置在 Jersey Config 类或其他东西中......

【问题讨论】:

  • 这是使用maven吗?在我看来,如果您不使用 maven,Jersey 会与单独的杰克逊 JAR 一起分发。
  • 是的,这是 Maven 项目的一部分。你建议我自己拉下 Jersey 并指向那个工件而不是 java.net Maven repo 上的那个?
  • 我认为你应该能够只添加对 Jackson 1.5 的依赖并定义冲突解决策略,选择 1.5 而不是 1.1。

标签: json maven-2 jersey jackson


【解决方案1】:

如果 Jersey 的 maven POM 不允许您将 Jackson 依赖项与 Jersey 依赖项分开,那么您可以手动获取各个 JAR,将 Jackson 1.5.x JAR 换成 1.1.x一个。

请注意,不能保证 Jersey 可以与较新的 Jackson 版本一起使用。 Jackson 的 API 在 1.1 版本前后发生了很大变化。

【讨论】:

  • 很有可能它仍然可以工作,因为理论上 1.x 次要版本应该是向后兼容的。但确实有一些情况下会引入意外的不兼容性。泽西岛还使用了一些较低级别的访问权限,但兼容性风险更高。
【解决方案2】:

您没有提供太多细节(尤其是关于您的运行时环境),所以我将只介绍问题的 maven 部分:在 dependencyManagement 部分下声明 Jackson 的 1.5 版以强制收敛其他依赖项jackson 作为依赖。

这是否会在运行时工作留给读者作为练习:)

为了记录,这是我们可以在V3.1JerseyOnePager 中看到的内容:

Jersey 目前在 GlassFish 3.0 中使用 Jackson 1.1。该版本将在 3.1 中升级到最新的稳定版本(当前为 1.5.2)。

【讨论】:

  • Maven2、Netbeans、Jersey、JPA、Glassfish 用于测试所以这让我相信 Jackson 依赖包在 Glassfish 中,而不是 Jersey。哦,也许这是 Glassfish 的一些限制。听起来对吗?
  • @gmoore:限制?您可能只是期望过高(AFAIK,GlassFish 符合规范)。但也许你可以在你的战争中捆绑 Jersey 和 Jackson,并告诉 GlassFish 首先使用你战争的库(在 sun-web.xml 中)而不是 GlassFish 提供的库。
  • 我的意思是 Glassfish/Jersey 与 Jackson 1.1.1 一起工作的限制,突然升级到 New Awesome 版本不会很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 2012-06-07
  • 2013-03-02
  • 1970-01-01
  • 1970-01-01
  • 2012-09-17
相关资源
最近更新 更多