У нас есть код ( моя команда не контролирует ), который использует класс 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 присутствует в пути к классам.
Following is when not:
jacksonStackTrace
PS: Я не могу удалить jar ядра Eclipse moxy, потому что моему проекту это нужно для демаршаллинга ответа. Из-за того, что другой проект, над которым я не контролирую, не дает ответа. Оба имеют один и тот же загрузчик классов для загрузки своих фляг и классов. (если вы работали с SAP Hybris, вы знаете, как там работает загрузка классов)