Resteasy with wildfly14: возвращаются не все поля - PullRequest
0 голосов
/ 08 октября 2018

Я перевожу свое приложение с wildfly 10 на wildfly 14 и использую resteasy 3.1.4 с jackson2.У меня странное поведение с ответом некоторых остальных служб: возвращаются не все поля (и я уверен, что они извлечены из mongodb).Единственное предупреждение, которое я вижу при развертывании моего приложения: WFLYRS0018: явное использование аннотации Джексона в развертывании JAX-RS;система отключит обработку 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

}

Любая помощьили предложить или идея действительно ценится

Спасибо

1 Ответ

0 голосов
/ 12 апреля 2019

Прошло 6 месяцев с тех пор, как был задан вопрос.Тем не менее, я столкнулся с подобной проблемой несколько дней назад в Wildfly 16.

Эта проблема была вызвана тем, что JsonBindingProvider имеет преимущество перед другими провайдерами в работе с полезными нагрузками JSON, в частности с Джексоном.https://issues.jboss.org/browse/RESTEASY-1911

Пожалуйста, смотрите документацию здесь.https://github.com/resteasy/Resteasy/commit/f6ddef5accb88d924e3d14ab15e081c79136fe55

Это можно исправить двумя способами без необходимости обновления объектов вашей модели (POJO):

  • Добавление системного свойства при запуске Wildfly -Dresteasy.preferJacksonOverJsonB=true
  • Исключить модуль jsonb в jboss-deployment-structure.xml
<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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...