我正在将我的应用程序从wildfly 10迁移到wildfly 14,并且正在使用具有jackson2的resteasy 3.1.4。 我对某些REST服务的响应有一个奇怪的行为:并非所有字段都被返回(并且我确定它们是从mongodb中提取的)。我在部署应用程序时看到的唯一警告是: WFLYRS0018:在JAX-RS部署中明确使用Jackson批注;系统将为当前部署禁用JSON-B处理。考虑将“ resteasy.preferJacksonOverJsonB”属性设置为“ false”以恢复JSON-B。
在响应中,我有两个类: 公共类Field实现了Serializable {
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
}
任何帮助,建议或想法都非常感谢
谢谢
答案 0 :(得分:1)
问问题已经6个月了。但是,几天前我在Wildfly 16上也遇到了类似的问题。
此问题是由JsonBindingProvider引起的,它比其他提供程序优先处理JSON负载,尤其是Jackson。 https://issues.jboss.org/browse/RESTEASY-1911
请在此处查看文档。 https://github.com/resteasy/Resteasy/commit/f6ddef5accb88d924e3d14ab15e081c79136fe55
可以通过两种方式修复它,而不必更新模型(POJO)对象:
-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规范,例如在模型中公开您的私有字段,或向您的字段添加合适的@Jsonb批注,就像这里https://www.baeldung.com/java-json-binding-api。
答案 1 :(得分:0)
我在 Wildfly 21 中遇到了类似的问题。添加一个 jboss-deployment-structure.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>
没有帮助
对我来说,可行的解决方案是在 Wildfly standalone.conf
中添加以下行以更喜欢 jackson:
JAVA_OPTS="$JAVA_OPTS -Dresteasy.preferJacksonOverJsonB=true"