gpt4 book ai didi

serialization - Wildfly14 : not all fields are returned

转载 作者:行者123 更新时间:2023-12-01 12:09:53 25 4
gpt4 key购买 nike

我正在将我的应用程序从wildfly 10 迁移到wildfly 14,并且我将resteasy 3.1.4 与jackson2 一起使用。
我对一些休息服务的响应有一个奇怪的行为:并不是所有的字段都被返回(而且我确信它们是从 mongodb 中提取的)。我在部署应用程序时看到的唯一警告是:
WFLYRS0018:在 JAX-RS 部署中显式使用 Jackson 注释;系统将禁用当前部署的 JSON-B 处理。考虑将“resteasy.preferJacksonOverJsonB”属性设置为“false”以恢复 JSON-B。

在响应中,我有两个类:
公共(public)类字段实现可序列化{

   private static final long serialVersionUID = -230381150649916138L;

private String name; // returned in response
private FieldsTypeEnum type; // NOT returned in response
private List<String> comboValues; // NOT returned in response
private boolean required; // NOT returned in response

//All getters and setters

}

public class ConfigurationField extends Field {

private static final long serialVersionUID = -2727277793405725817L;

private Integer row; // returned in response
private boolean useForCalendar; // returned in response

//All getters and setters

}

非常感谢任何帮助或建议或想法

谢谢

最佳答案

问这个问题已经6个月了。然而,几天前我在 Wildfly 16 上遇到了类似的问题。

该问题是由 JsonBindingProvider 优先于处理 JSON 有效负载的其他提供程序引起的,尤其是 Jackson 提供的。
https://issues.jboss.org/browse/RESTEASY-1911

请在此处查看文档。
https://github.com/resteasy/Resteasy/commit/f6ddef5accb88d924e3d14ab15e081c79136fe55

它可以通过 2 种方式修复,而无需更新您的模型 (POJO) 对象:

  • Wildfly 启动时添加系统属性 -Dresteasy.preferJacksonOverJsonB=true
  • 排除jboss-deployment-structure.xml中的jsonb模块
  • <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
    <deployment>
    <exclusions>
    <module name="org.jboss.resteasy.resteasy-json-binding-provider" />
    </exclusions>
    </deployment>
    </jboss-deployment-structure>

    如果您不想更改 Wildfly 配置,则必须更新模型以符合 JsonB 规范,例如在您的模型中公开您的私有(private)字段,或在您的字段中添加合适的 @Jsonb 注释,......就像这里, https://www.baeldung.com/java-json-binding-api .

    关于serialization - Wildfly14 : not all fields are returned,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52698321/

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