2014-04-01 3 views
3

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처럼 보인다. 이 문제를 해결하는 방법이 있습니까?

답변

-1

당신이 당신의 날짜 변수를 포함하는 ISO-8601에서 전체 프로젝트를 인코딩해야

<properties> 
    <project.build.sourceEncoding>ISO-8601</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>ISO-8601</project.reporting.outputEncoding> 
</properties> 

사용하여 pom.xml 파일에 직접 인코딩을 구성 할 수 있습니다.

또 다른 가능성은의 Utils 클래스와 SimpleDateFormat에 당신의 프로그램에서 변수를 변환하는 것입니다 :

public abstract class DateUtils { 
    private static final SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

    /** Returns the current time as a String. */ 
    public static String getCurrentDate() { 
     return SIMPLE_DATE_FORMAT.format(new Date()); 
    } 
} 

이 방법은 형식 문자열로 날짜 변수를 반환합니다.

+0

나는 당신이 내 요점을 생각하지 않는다. 나는 직렬화 된 json에 대해서 이야기하고있다. 단지 간단한 문자열 값을 포맷하는 것이 아니다. 이 게시물을 참조하십시오, 나는 비슷한 질문을했습니다. http://stackoverflow.com/questions/13803391/serialize-date-in-a-json-rest-web-service-as-iso-8601-string?rq=1 – Chris

+0

오, 알겠습니다. 나는 당신의 질문에 대해 오해했습니다. @JsonFormat 주석은 효과가 있습니까? – muffin