I have two apps. The first app (Spring Boot) sends some information to the second app (JavaEE 7). In Java EE app I use JAX-RS client and I get the exception when I try to get a response from the first app.
Caused by: javax.json.bind.JsonbException: Unable to deserialize property 'openDate' because of: Error parsing class java.util.Date from value: 2016-07-14T21:00:00.000+0000. Check your @JsonbDateFormat has all time units for class java.util.Date type, or consider using org.eclipse.yasson.YassonProperties#ZERO_TIME_PARSE_DEFAULTING.
at org.eclipse.yasson.internal.serializer.AbstractContainerDeserializer.deserializeInternal(AbstractContainerDeserializer.java:90)
at org.eclipse.yasson.internal.serializer.AbstractContainerDeserializer.deserialize(AbstractContainerDeserializer.java:60)
at org.eclipse.yasson.internal.serializer.CollectionDeserializer.deserializeNext(CollectionDeserializer.java:106)
at org.eclipse.yasson.internal.serializer.AbstractContainerDeserializer.deserializeInternal(AbstractContainerDeserializer.java:84)
at org.eclipse.yasson.internal.serializer.AbstractContainerDeserializer.deserialize(AbstractContainerDeserializer.java:60)
at org.eclipse.yasson.internal.serializer.ObjectDeserializer.deserializeNext(ObjectDeserializer.java:174)
at org.eclipse.yasson.internal.serializer.AbstractContainerDeserializer.deserializeInternal(AbstractContainerDeserializer.java:84)
... 182 more
Caused by: javax.json.bind.JsonbException: Error parsing class java.util.Date from value: 2016-07-14T21:00:00.000+0000. Check your @JsonbDateFormat has all time units for class java.util.Date type, or consider using org.eclipse.yasson.YassonProperties#ZERO_TIME_PARSE_DEFAULTING.
at org.eclipse.yasson.internal.serializer.AbstractDateTimeDeserializer.deserialize(AbstractDateTimeDeserializer.java:71)
at org.eclipse.yasson.internal.serializer.AbstractValueTypeDeserializer.deserialize(AbstractValueTypeDeserializer.java:64)
at org.eclipse.yasson.internal.serializer.ObjectDeserializer.deserializeNext(ObjectDeserializer.java:174)
at org.eclipse.yasson.internal.serializer.AbstractContainerDeserializer.deserializeInternal(AbstractContainerDeserializer.java:84)
... 188 more
Caused by: java.time.format.DateTimeParseException: Text '2016-07-14T21:00:00.000+0000' could not be parsed, unparsed text found at index 23
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1952)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
at java.time.ZonedDateTime.parse(ZonedDateTime.java:597)
at org.eclipse.yasson.internal.serializer.DateTypeDeserializer.parseWithOrWithoutZone(DateTypeDeserializer.java:83)
at org.eclipse.yasson.internal.serializer.DateTypeDeserializer.parseDefault(DateTypeDeserializer.java:54)
at org.eclipse.yasson.internal.serializer.DateTypeDeserializer.parseDefault(DateTypeDeserializer.java:34)
at org.eclipse.yasson.internal.serializer.AbstractDateTimeDeserializer.deserialize(AbstractDateTimeDeserializer.java:69)
... 191 more
Jax-RS method code:
@Override
public BudgetRecipientsReferenceViewHolderResponse getBudgetRecipients(String language, DefaultRequest request, String sessionKey) {
return ClientBuilder.newClient()
.target(URI.create("http://127.0.0.1:8082/dboreferences/budgetRecipientsReferenceView/getAll"))
.request(MediaType.APPLICATION_JSON)
.header(GlobalConsts.SESSION_TOKEN, sessionKey)
.post(Entity.entity(request, MediaType.APPLICATION_JSON), BudgetRecipientsReferenceViewHolder.class);
}
Response DTO class
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class BudgetRecipientsReferenceViewHolder implements Serializable {
private static final long serialVersionUID = -2971479083071002129L;
private Long treasuryBranchCode;
private String budgetRecipientAccount;
private String budgetRecipientName;
private boolean active;
private String budgetRecipientINN;
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd-MM-yyyy hh:mm:ss", timezone = "GMT+3")
private Date openDate;
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd-MM-yyyy hh:mm:ss", timezone = "GMT+3")
private Date closeDate;
}
I have the same class in Spring Boot application (on another side). I try to use different Date deserializers, delete @JsonFormat on both sides, but it doesn't work.