我正在使用WildFly 8.0.0 Final . 其余的WebService实现是RestEasy . 根据WildFly / Jboss文档,我添加了jboss-deployment-structure.xml以使用Jackson2.2 . *提供程序 .
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.jboss.resteasy.resteasy-jackson-provider"/>
</exclusions>
<dependencies>
<module name="org.jboss.resteasy.resteasy-jackson2-provider" services="import"/>
</dependencies>
</deployment>
</jboss-deployment-structure>
现在,我的问题是所有java.util.Date变量都没有序列化为ISO-8601格式 . 我看过这篇文章Wildfly using the Jackson provider instead of Jettison,但是它使用的是jackson-provider-1 .
是否有任何配置可以将所有日期变量格式化为ISO-8601?
我不想添加任何外部依赖项 . 仅使用WildFly提供的是最佳选择 . 我已将以下依赖项添加到我的pom.xml文件中 . 我的代码是https://github.com/evil850209/javaee7-samples
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.3.0</version>
<scope>provided</scope>
</dependency>
我已经完成了这篇文章(Wildfly using the Jackson provider instead of Jettison)提到的内容 . 现在我收到了新的错误:
Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper
at org.chris.demo.rest.JacksonConfig.<init>(JacksonConfig.java:18)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [rt.jar:1.7.0_25]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) [rt.jar:1.7.0_25]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [rt.jar:1.7.0_25]
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) [rt.jar:1.7.0_25]
at org.jboss.resteasy.core.ConstructorInjectorImpl.construct(ConstructorInjectorImpl.java:148)
我已经更改了我的jboss-deployment-structure.xml,并将其放在WEB-INF文件夹下 .
<?xml version="1.0" ?>
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.jboss.resteasy.resteasy-jackson-provider" />
</exclusions>
<dependencies>
<module name="org.jboss.resteasy.resteasy-jackson2-provider" services="import" />
<module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" />
</dependencies>
</deployment>
</jboss-deployment-structure>
我的JacksonConfig课程如下:
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JacksonConfig implements ContextResolver<ObjectMapper> {
private final ObjectMapper objectMapper;
public JacksonConfig() {
objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
}
@Override
public ObjectMapper getContext(Class<?> type) {
return objectMapper;
}
}
似乎jboss-deployment-structure.xml没有将jackson2类导入我的WildFly服务器 . 有没有人如何解决这个问题?
1 回答
您可以使用以下命令直接在pom.xml文件中配置编码
这应该用ISO-8601对整个项目进行编码,包括Date变量 .
另一种可能性是使用Utils Class和SimpleDateFormat转换程序中的变量:
此方法将Date变量作为格式化String返回 .