0

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

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

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

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

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

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

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

4

1 回答 1

0

不同的应用程序可以使用不同的主要版本的 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 的复杂领域之一,部分原因是文档在某些地方不完整;也因为有时解释并没有显示实现您想要的最简单的方法。

于 2013-12-04T20:55:42.747 回答