【发布时间】:2017-04-01 14:05:20
【问题描述】:
我正在使用 cxf 服务器进行休息 web 服务,提供一个以 SimpleDateFormat 作为日期格式的杰克逊提供程序 如此处所述
How do I configure the date format the server returns using CXF JAX-RS and Jackson 2 in XML?
它可以提供为其定义的日期时间格式,而不是产生服务器错误。
目标是转换收到的日期并转换它或向客户端返回描述错误
遵循 xml 配置
<bean id="dataFormat" class="java.text.SimpleDateFormat">
<constructor-arg type="java.lang.String" value=" yyyy-MM-dd'T'HH:mm:ssXXX" />
</bean>
<bean id="jaxbAnnIntrospector" class="org.codehaus.jackson.xc.JaxbAnnotationIntrospector" />
<bean id="objectMapper" class="org.codehaus.jackson.map.ObjectMapper">
<property name="serializationConfig.annotationIntrospector"
ref="jaxbAnnIntrospector" />
<property name="deserializationConfig.annotationIntrospector"
ref="jaxbAnnIntrospector" />
<property name="dateFormat" ref="dataFormat" />
</bean>
<bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider">
<property name="mapper" ref="objectMapper" />
</bean>
<jaxrs:providers>
...
<ref bean="jsonProvider" />
...
</jaxrs:providers>
服务器错误:
java.lang.NoSuchMethodError: javax.ws.rs.ServerErrorException.validate(Ljavax/ws/rs/core/Response;Ljavax/ws/rs/core/Response$Status$Family;)Ljavax/ws/rs/core/Response;
at javax.ws.rs.ServerErrorException.<init>(ServerErrorException.java:101)
at javax.ws.rs.InternalServerErrorException.<init>(InternalServerErrorException.java:80)
at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:242)
at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:98)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:218)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:163)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137)
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:158)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:243)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:163)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:219)
提前致谢
【问题讨论】:
-
请发布“提供为其定义的日期时间格式而不是产生服务器错误”的代码
-
更新帖子@IvanPronin