WildFly 8.0.0 Final을 사용하고 있습니다. 나머지 WebService 구현은 RestEasy입니다. WildFly/Jboss 문서에 따르면 jboss-deployment-structure.xml을 Jackson2.2. * 공급자를 사용하도록 추가했습니다.JSON java.util.Date 변수를 ISO-8601 형식으로 날짜순 문자열로 변환하는 방법 WildFly에서 날짜 문자열?
<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에 배포-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;
}
}
그것은 내 제이보스 서버에 jackson2 클래스를 가져하지 않는 JBoss에 배포-structure.xml처럼 보인다. 이 문제를 해결하는 방법이 있습니까?
나는 당신이 내 요점을 생각하지 않는다. 나는 직렬화 된 json에 대해서 이야기하고있다. 단지 간단한 문자열 값을 포맷하는 것이 아니다. 이 게시물을 참조하십시오, 나는 비슷한 질문을했습니다. http://stackoverflow.com/questions/13803391/serialize-date-in-a-json-rest-web-service-as-iso-8601-string?rq=1 – Chris
오, 알겠습니다. 나는 당신의 질문에 대해 오해했습니다. @JsonFormat 주석은 효과가 있습니까? – muffin