我收到此错误
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"])
这是因为 Wildfly 不知道如何处理瞬间。通过阅读错误,我可以简单地在该课程中处理它,但这似乎很愚蠢。我正在使用下面的库,并在我的war
文件中运送它和所有更新的杰克逊,但仅此一项并没有做到。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.3.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.3.2</version>
</dependency>
我找到了这个维基
但是我的实现有问题,类定义语句有错误
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<ObjectMapper> {
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;
}
我把它放在我的web.xml
(不要混淆jboss-web.xml
)
<web-app ...
<context-param>
<param-name>resteasy.providers</param-name>
<param-value>com.lm.infrastructure.JacksonProducer</param-value>
</context-param>
</web-app>
我尝试修改modules/system/layers/base/com/fasterxml/jackson/jaxrs/jackson-jaxrs-json-provider/main/module.xml
似乎在这里建议的
<module xmlns="urn:jboss:module:1.1" name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider">
<resources>
<resource-root path="jackson-jaxrs-json-provider-2.3.2.jar"/>
<resource-root path="jackson-jaxrs-base-2.3.2.jar"/>
<resource-root path="jackson-module-jaxb-annotations-2.3.2.jar"/>
<resource-root path="jackson-databind-2.3.2.jar"/>
<resource-root path="jackson-datatype-jsr310-2.3.2.jar"/>
<!-- Insert resources here -->
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.ws.rs.api"/>
<module name="javax.xml.bind.api"/>
<module name="com.fasterxml.jackson.core.jackson-annotations"/>
<module name="com.fasterxml.jackson.core.jackson-core"/>
<module name="com.fasterxml.jackson.core.jackson-databind"/>
<module name="com.fasterxml.jackson.datatype.jackson-datatype-jsr310"/>
</dependencies>
</module>
我的主要目标是让 jsr310 序列化和反序列化。我需要做什么才能做到这一点?但我怀疑答案将适用于 Wildfly 不附带的任何其他数据类型。(我认为这个问题是相关的)