【问题标题】:Can I use Glassfish 4 with Jackson 2.x?我可以将 Glassfish 4 与 Jackson 2.x 一起使用吗?
【发布时间】:2013-12-04 14:04:14
【问题描述】:

我正在为使用 Jersey 2 的 Glassfish 4.0 开发应用程序。我想使用 Jackson 作为 Jersey 的 JSON 提供程序。

我在 Glassfish 中更新了 Jersey 版本,这有助于解决 CDI 问题。

理想情况下,我想使用更新的 (fasterxml) 版本的 Jackson。

目前,我已将应用配置为使用 Glassfish (codehaus) 提供的 Jackson 版本。

所以,我知道如何将 Glassfish 4 与提供的 Jersey 和 Jackson 一起使用。我也知道如何配置最新的 Jersey 以在独立的 Jersey 应用程序中使用最新的 Jackson。

但是,我无法使用最新版本的 Jersey 和 Jackson 在 Glassfish 4.0 中部署和运行应用程序。我尝试添加 Maven 依赖项,但没有成功。我怀疑 Glassfish 以某种方式使用它自己的版本,然后与来自 maven 的版本冲突。

这应该有效吗?我的意思是,应用程序是否应该能够提供自己的 Jersey 和 Jackson 版本并让 Glassfish 使用它们?我问是因为我知道 Glassfish 4 中的一些错误可能是我的问题的原因。

【问题讨论】:

  • 查看here提供的答案

标签: jackson glassfish-4 jersey-2.0


【解决方案1】:

不同的应用程序可以使用不同的Jackson主版本;所以较旧的代码可以使用 Jackson 1.x 和较新的 2.x。这是因为它们存在于不同的 Java 包中并且不会发生冲突。

Jersey(以及一般的 JAX-RS)具有灵活的扩展机制,因此可以将任一 Jackson 版本与 Jersey 1.x 和 2.x 一起使用。但要做到这一点,您通常应该直接使用 Jackson JAX-RS 提供程序,而不是通过特定于 Jersey 的机制。 对于 Jackson 2,这意味着获取 https://github.com/FasterXML/jackson-jaxrs-providers 的 jar,将其添加到类路径中,并让它使用自动注册。不需要额外的配置。

最后,我不认为 Glassfish 4 存在问题。

所以这应该是完全可能的。但是可配置性一直是 Jersey 的复杂领域之一,部分原因是文档在某些地方不完整;也因为有时解释并没有显示出实现您想要的最简单的方法。

【讨论】:

  • 当我通过 maven 包含球衣依赖项(适用于 2.4.1)时,由于某些 CDI 问题,我的应用程序将无法部署。如果有人感兴趣,我可以发布我的 pom.xml,但 glassfish、weld、cdi 或某处似乎存在问题。
  • 瑞克,同样的问题;你解决了吗?我假设 glassfish 附带了旧版本的 jackson,并且以某种方式忽略了添加到工件中的新版本?
猜你喜欢
  • 2013-06-11
  • 1970-01-01
  • 1970-01-01
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 2023-01-05
  • 2017-03-22
  • 1970-01-01
相关资源
最近更新 更多