How can get Wildfly to use a newer version of Jackson, with additional datatypes?
xenoterracide Mar 4, 2014 9:14 PMI asked this on stackoverflow, and I found this wiki, but so far haven't had any luck.
Here's the error I get: 03:33:14,938 WARN [org.jboss.resteasy.core.ExceptionHandler] (default task-1) Failed executing PUT /individual/5a247ce9-0a73-4373-89ce-e4177f911259/activities/432e6e5b-4185-462f-b57e-9ec04bec3d58: org.jboss.resteasy.spi.ReaderException: org.codehaus.jackson.map.JsonMappingException: Can not instantiate value of type [simple type, class java.time.Instant] from JSON String; no single-String constructor/factory method (through reference chain: com.lm.activity.DTOActivity["created"])
It's because Wildfly doesn't know how to handle an instant. By reading the error I could simply handle it in that class, but that seems silly. I'm using the following library and am shipping it and all of an updated jackson in my `war` file, but that alone isn't doing it.
package com.lm.infrastructure;
import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;
@Provider
@Produces( MediaType.APPLICATION_JSON )
public class JacksonProducer implements ContextResolver {
public JacksonProducer() throws Exception {
this.json = new ObjectMapper()
.findAndRegisterModules()
.configure( FAIL_ON_UNKNOWN_PROPERTIES, false );
}
@Override
public ObjectMapper getContext( Class type ) {
return json;
}
private final ObjectMapper json;
}
I put this in my `web.xml` (not to be confused with `jboss-web.xml`)
this is from a dump of the `WebArchive`
/WEB-INF/lib/jackson-databind-2.3.1.jar /WEB-INF/lib/jackson-core-2.3.1.jar /WEB-INF/lib/jackson-annotations-2.3.1.jar /WEB-INF/lib/jackson-datatype-jsr310-2.3.1.jar /WEB-INF/web.xml /WEB-INF/classes/com/lm/infrastructure/JacksonProducer.class
-
pom.xml 9.0 KB
-
web.xml 620 bytes
-
jboss-web.xml 104 bytes