我正在将 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(使用前将#替换为@)