如何在Payara 2中使用杰克逊5



我将杰克逊 2 与 Payara 4 一起使用,我想在 Payara 5 中使用杰克逊 2

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

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

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

需要将属性jersey.config.jsonFeature设置为 JacksonFeature,以便不注册默认的 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 功能默认值不提供此类属性,但如果属性存在且未JsonBindingFeature jersey.config.jsonFeature则不会自行注册。同一属性适用于所有泽西岛功能,因此将其设置为 JacksonFeature 将仅允许注册杰克逊功能。

如果你的 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>

相关内容

  • 没有找到相关文章

最新更新