如何更改 JAX-RS 应用程序中的 Jackson 版本 (WebSphere Liberty)

2023-11-29

我正在将 JAX-RS 应用程序从 WebSphere 8.0 迁移到 WebSphere Liberty 8.5.5。

在WebSphere 8.0 中,Jackson 由WebSphere 提供。我可以找到jackson-core-asl-1.9.12.jar, jackson-jaxrs-1.9.12.jar, jackson-mapper-asl-1.9.12.jar and jackson-xc-1.9.12.jar文件在AppServer\plugins\目录。

在新的应用程序服务器(WebSphere Liberty)中,我收到以下异常:org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "myPropertyName"。我认为发生这个异常是因为注释@JsonIgnoreProperties(ignoreUnknown = true)对序列化类不起作用。我的猜测是,发生这种情况是因为 WebSphere Liberty 8.5.5 提供了旧版本的 Jackson。

我尝试部署应用程序所需的 Jackson 版本, 但这没有帮助(我仍然有例外)。如何使 WebSphere Liberty 使用我需要的 Jackson 版本?


WebSphere Liberty 将使用您在 JAX-RS 2.0 中指定的 Jackson 版本,但有一些注意事项(我们正在追求)。

A) 您仍然必须显式指定 JSON 提供程序。

B) 您可能会看到 NPE 为 16.0.0.2,如下所述:在 Websphere liberty 配置文件中注册 JacksonJsonProvider。我们已经按照描述解决了这个问题。最新的测试版没有表现出这种行为,这表明下一个运行时更新也不会表现出这种行为。

例子:https://github.com/gameontext/gameon-mediator/blob/6b469d18965673af35129abf3ff987b61af54c88/mediator-app/src/main/java/org/gameontext/mediator/JaxbJsonProvider.java

and

https://github.com/gameontext/gameon-mediator/blob/6b469d18965673af35129abf3ff987b61af54c88/mediator-app/src/main/java/org/gameontext/mediator/JsonProvider.java

我们的 gradle 构建引入了 jackson 依赖项:https://github.com/gameontext/gameon-mediator/blob/6b469d18965673af35129abf3ff987b61af54c88/mediator-app/build.gradle

我们的 server.xml 使用 jaxrs-2.0,但没有执行任何类加载器魔法:https://github.com/gameontext/gameon-mediator/blob/6b469d18965673af35129abf3ff987b61af54c88/mediator-wlpcfg/servers/gameon-mediator/server.xml

HTH

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何更改 JAX-RS 应用程序中的 Jackson 版本 (WebSphere Liberty) 的相关文章

随机推荐