Serialization 使用wildfly14轻松恢复:并非所有字段都返回

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

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

在回答中,我有两个类: 公共类字段实现可序列化{

   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

}
private static final long serialVersionUID=-230381150649916138L;
私有字符串名称;//在响应中返回
私有字段类型;//响应中未返回
私有列表comboValues;//未在响应中返回
需要私有布尔值;//响应中未返回
//所有的能手和二传手
}
公共类配置字段扩展字段{
私有静态最终长serialVersionUID=-2727793405725817L;
私有整数行;//在响应中返回
私有布尔值useForCalendar;//在响应中返回
//所有的能手和二传手
}
非常感谢您的任何帮助、建议或想法


谢谢

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

这个问题是由JsonBindingProvider在处理JSON有效负载时优先于其他提供程序引起的,特别是Jackson提供程序。

请参阅此处的文档。

无需更新模型(POJO)对象即可通过两种方式修复:

  • 启动Wildfly时添加系统属性
    -drestasy.preferJacksonOverJsonB=true
  • 在jboss部署结构.xml中排除jsonb模块


如果您不想更改Wildfly配置,您必须更新您的模型以符合JsonB规范,例如,在模型中公开您的私有字段,或者向字段添加合适的@JsonB注释。。。就像这里一样。

我在Wildfly 21中遇到了类似的问题。添加
jboss部署结构.xml
如下:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.3">
    <deployment>
        <exclusions>
            <module name="org.jboss.resteasy.resteasy-json-binding-provider"/>
        </exclusions>
        <dependencies>
            <module name="org.jboss.resteasy.resteasy-jackson2-provider" />
        </dependencies>
    </deployment>
</jboss-deployment-structure>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.3">
    <deployment>
        <exclusions>
            <module name="org.jboss.resteasy.resteasy-json-binding-provider"/>
        </exclusions>
        <dependencies>
            <module name="org.jboss.resteasy.resteasy-jackson2-provider" />
        </dependencies>
    </deployment>
</jboss-deployment-structure>
JAVA_OPTS="$JAVA_OPTS -Dresteasy.preferJacksonOverJsonB=true"