Когда eclipse moxy jar присутствует в пути к классам, поставщик jersey jackson не рассматривается - PullRequest
0 голосов
/ 10 июля 2020

У нас есть код ( моя команда не контролирует ), который использует класс JacksonJsonProvider для де-сериализации ответа REST. Но что я наблюдаю, это когда у меня в пути к классам присутствует eclipse moxy core jar, тогда, когда вызывается метод readEntity, вместо того, чтобы переходить в класс Джексона для демаршаллинга ответа, он переходит в Eclipse Unmarshaller.

Основной проблема, с которой я столкнулся из-за этого, в моем ответе есть поле, которое возвращает значение даты (до тех пор, пока) из БД, когда неупорядочено, значение не установлено (ноль). Класс DTO имеет поле типа java .util.Date.

Какие возможные варианты у меня есть?

Ниже приведен код клиента:

ClientConfig clientConfig = new ClientConfig();
GenericType<List<PublicationDTO>> abcd = new GenericType<List<PublicationDTO>>() {};
clientConfig.register(JacksonJsonProvider.class);
clientConfig.register("application/json");

Client _client2 = ClientBuilder.newClient(clientConfig);
WebTarget _webTarget2 = _client2.target("....");
Response resp = _webTarget2.request(MediaType.APPLICATION_JSON_TYPE).get();
List<PublicationDTO> data = resp.readEntity(abcd);
data.forEach(System.out::println);

Вывод:

Класс DTO:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@JsonIgnoreProperties(ignoreUnknown = true)
public class PublicationDTO {
  private Long publicationId;
  
  @XmlSchemaType(name = "date")
  private Date startTime;

  @XmlSchemaType(name = "date")
  private Date endTime;

Ниже приведена трассировка стека классов, которые были вызваны, когда я делаю readEntity, когда eclipse moxy core lib присутствует в пути к классам.

EclipsereadEntity

Following is when not:

jacksonStackTrace

PS: Я не могу удалить jar ядра Eclipse moxy, потому что моему проекту это нужно для демаршаллинга ответа. Из-за того, что другой проект, над которым я не контролирую, не дает ответа. Оба имеют один и тот же загрузчик классов для загрузки своих фляг и классов. (если вы работали с SAP Hybris, вы знаете, как там работает загрузка классов)

1 Ответ

0 голосов
/ 12 июля 2020

Когда мы используем Jersey из GlassFi sh v4, по умолчанию рассматривается реализация Eclipse Link Moxy. Если мы хотим выбрать Джексона, зарегистрируйте клиентский объект с помощью JacksonFeature.

Например, client.register(JacksonFeature.class);

...