gpt4 book ai didi

jax-rs - 如何在 Payara 5 中使用 Jackson 2?

转载 作者:行者123 更新时间:2023-12-05 00:12:46 24 4
gpt4 key购买 nike

我将 Jackson 2 与 Payara 4 一起使用,我想使用 jackson 2 在 Payara 5 .

使用 JAX-RS,我也想避免更改注释等...

在 Payara 5 中,默认的 Jsonb 提供程序是 Yasson。
有什么想法可以禁用它并改用 jackson 吗?欢迎所有评论/想法:-)

注意: Yasson 非常有趣,但处理抽象类或接口(interface)序列化/反序列化比放置 Jackson 注释要复杂一些。
我目前的理解是它需要实现一个 JsonbSerializer/Deserializer 但实际上序列化器/反序列化器仅在字段/方法上可用(为类打开了一个问题,这将非常有帮助)。
无论如何,迁移到 Yasson 将意味着根据需要实现许多序列化器/反序列化器(对于实体,当然还有集合),但我想这是一件很难的事情。

最佳答案

您需要设置属性 jersey.config.jsonFeatureJacksonFeature这样就不会注册默认的 JsonB 功能。

您可以通过覆盖 Application.getProperties() 在代码中设置它。方法,或将 web.xml 中的属性设置为 context-param :

<context-param>
<param-name>jersey.config.jsonFeature</param-name>
<param-value>JacksonFeature</param-value>
</context-param>

如果您的 Jersey Servlet 在 web.xml 中显式声明(作为 javax.ws.rs.core.Application 或作为自定义子类),则在 Jersey Application servlet 声明中使用 init-param 代替:
<servlet>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<init-param>
<param-name>jersey.config.jsonFeature</param-name>
<param-value>JacksonFeature</param-value>
</init-param>
...
</servlet>

您还需要将 Jackson 依赖项添加到您的应用程序中 - 但您可能已经这样做了,所以请忽略这一点。

解释:

MOXy 功能提供了一个属性 jersey.config.disableMoxyJson禁用它。 Payara 5 中的 JsonB 功能默认不提供此类属性,但如果 jersey.config.jsonFeature 则不会自行注册属性存在但不是 JsonBindingFeature .相同的属性适用于所有 Jersey 功能,因此将其设置为 JacksonFeature将只允许注册 JacksonFeature。

关于jax-rs - 如何在 Payara 5 中使用 Jackson 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49793289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com