Reputation: 9692
I have java8 LocalDateTime parameters defined in my Entities. I have deployed my jax-rs webapp in wildfly 10.
When I make a REST call, I get following exception;
Caused by: java.time.format.DateTimeParseException: Text '2016-06-03T00:38:48.043Z' 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.LocalDateTime.parse(LocalDateTime.java:492)
at com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer.deserialize(LocalDateTimeDeserializer.java:63)
at com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer.deserialize(LocalDateTimeDeserializer.java:36)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:523)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)
at com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap.findDeserializeAndSet(BeanPropertyMap.java:285)
... 56 more
I have registered JavaTimeModule in the ObjectMapper;
@Provider
public class LocalDateTimeConverterProvider implements ContextResolver<ObjectMapper>, ParamConverterProvider {
private final LocalDateTimeConverter converter = new LocalDateTimeConverter();
private final ObjectMapper mapper;
public LocalDateTimeConverterProvider() {
mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
mapper.registerModule(new JavaTimeModule());
}
@Override
public ObjectMapper getContext(Class<?> type) {
return mapper;
}
Why I get above exception? The default serializer provided by Java8 JavaTimeModule won't work?
Upvotes: 1
Views: 2601
Reputation: 75964
Register your local date time deserilizer with ISO_DATE_TIME format to allow the local date time accept time zones.
javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ISO_DATE_TIME)
Upvotes: 1