我正在开发一个使用Jersey 2的Glassfish 4.0应用程序。我想使用Jackson作为Jersey的JSON提供程序。
我更新了Glassfish中的Jersey版本,这有助于解决CDI问题。
理想情况下,我想使用Jackson的较新版本(fastxml)。
目前,我已将应用程序配置为使用Glassfish(codehaus)提供的Jackson版本。
所以,我知道如何使用提供的泽西和杰克逊的Glassfish 4。我也知道如何配置最新的Jersey以在独立的Jersey应用程序中使用最新的Jackson。
但是,我无法使用最新版本的Jersey和Jackson在Glassfish 4.0中部署和运行应用程序。我尝试添加maven依赖项,但没有成功。我怀疑Glassfish是以某种方式使用它自己的版本,然后与maven的版本冲突。
这应该有用吗?我的意思是,如果一个应用程序能够提供自己的Jersey和Jackson版本并让Glassfish使用它们吗?我问,因为我知道Glassfish 4中的一些错误可能是我遇到问题的原因。
答案 0 :(得分: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存在问题。
所以这应该是完全可能的。但可配置性一直是泽西岛的一个复杂领域,部分原因是文件在某些地方不完整;而且因为有时解释并没有显示达到你想要的最简单的方法。