2013-04-09 8 views
6

जोड़ने के बाद भी जैक्सबी एनोटेशन का पता लगाने में विफल रहता है मैं सीएक्सएफ + जैक्सन का उपयोग कर आरएएसटी सेवा के लिए जेएक्सबी @ एक्सएमएलआरयूटीमेंट एनोटेशन के साथ एक सरल उदाहरण कॉन्फ़िगर करने की कोशिश कर रहा हूं। इस प्रकारजैक्सन ऑब्जेक्ट मैपर

एक कस्टम वस्तु नक्शाकार निर्मित::

public class CustomObjectMapper extends ObjectMapper{ 

    public CustomObjectMapper() { 
    super(); 
    super.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true); 
    super.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL); 
    AnnotationIntrospector primary = new JaxbAnnotationIntrospector(); 
    AnnotationIntrospector secondary = new JacksonAnnotationIntrospector(); 
    AnnotationIntrospector pair = new AnnotationIntrospector.Pair(primary, secondary); 
    super.setAnnotationIntrospector(pair); 
    } 

} 

इस उत्तीर्ण मैं पहले से ही this की तरह ढेर अतिप्रवाह में विभिन्न इसी तरह के सवाल के साथ ही ब्लॉग के माध्यम से चले गए हैं और नीचे समाधान के साथ आए हैं वसंत config में Json प्रदान की के निर्माता

<bean id="jacksonMapper" class="com.myorg.test.CustomObjectMapper" /> 

    <jaxrs:providers> 
     <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"> 
      <constructor-arg ref="jacksonMapper" /> 
     </bean> 
    </jaxrs:providers> 

जोड़ा गया एक साधारण वर्ग के लिएJAXB रूट तत्व एनोटेशन

@XmlRootElement(name = "JsonBean") 
public class JsonBean { 
    private String val1; 
    private String val2; 

    public String getVal1() { 
     return val1; 
    } 

    public void setVal1(String val1) { 
     this.val1 = val1; 
    } 

    public String getVal2() { 
     return val2; 
    } 

    public void setVal2(String val2) { 
     this.val2 = val2; 
    } 

} 

जब मैं नीचे json पारित साथ,

{ 
    "JsonBean": { 
     "val1": "Hello", 
     "val2": "Hi" 
    } 
} 

यह अपवाद नीचे फेंक रहा है:

WARNING: javax.ws.rs.InternalServerErrorException: org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "JsonBean" (Class com.cognizan 
t.poc.connectedcar.JsonBean), not marked as ignorable 
at [Source: [email protected]; line: 2, column: 13] (through reference chain: com.myorg.test.Json 
Bean["JsonBean"]) 
     at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:243) 
     at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:99) 
     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:223) 
     at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:203) 
     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:755) 
     at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:219) 
     at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:669) 
     at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:457) 
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) 
     at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557) 
     at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) 
     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075) 
     at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384) 
     at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) 
     at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009) 
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) 
     at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) 
     at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154) 
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) 
     at org.eclipse.jetty.server.Server.handle(Server.java:368) 
     at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489) 
     at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:953) 

मैं यहाँ कुछ याद आ रही है? कृपया मदद करे।

उत्तर

2

मुझे यह सही मिला।

मैं कस्टम नक्शाकार में de-क्रमबद्धता के लिए खोलना जोड़ने के लिए याद किया:

CustomObjectMaller

super.configure(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE, true); 

भी नीचे लाइन जोड़ा, के रूप में वसंत कॉन्फ़िग फ़ाइल संशोधित:

<jaxrs:providers> 
    <bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider"> 
     <property name="mapper" ref="jacksonMapper" /> 
    </bean> 
</jaxrs:providers> 

यह अपेक्षित काम करना शुरू कर दिया ..

संबंधित मुद्दे