2017-08-07 60 views
0

如何使用JAX-RS設置Apache CXF Spring Javaconfig和Jackson? 我已閱讀 http://cxf.apache.org/docs/springboot.html#SpringBoot-SpringBootCXFJAX-RSStarterhttp://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-JacksonSpring Javaconfig和Jackson Apache CXF(JAX-RS)

它建議使用

<jaxrs:providers> 
    <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/> 
</jaxrs:providers> 

,但我想遠離XML路程,使用純javaconfig。

我現在的配置是

@SpringBootApplication 
public class Application { 
    @Autowired 
    private Bus bus; 

    public static void main(String[] args) { 
     SpringApplication.run(Application .class, args); 
    } 

    @Bean 
    public Server rsServer() { 
     JAXRSServerFactoryBean endpoint = new JAXRSServerFactoryBean(); 
     endpoint.setBus(bus); 
     endpoint.setAddress("/"); 
     endpoint.setServiceBeans(Arrays.<Object>asList(new MyService())); 
    } 
} 

Andpoint在我班上的MyService的作品定義,但被調用時,他我得到消息

org.apache.cxf.jaxrs.utils.JAXRSUtils:沒有消息正文作者已爲類MyServiceResponse找到 , ContentType:application/json; charset = UTF-8

回答

1

您需要添加一個json Provider bean。這將作爲messageProvider。你的應用程序類應該看起來像這樣。

import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider 

@SpringBootApplication 
public class Application { 
    @Autowired 
    private Bus bus; 

    public static void main(String[] args) { 
     SpringApplication.run(Application .class, args); 
    } 

    @Bean 
    public Server rsServer() { 
     List<? extends Object> providers = new ArrayList<>(); 
     providers.add(getJsonProvider()); 
     JAXRSServerFactoryBean endpoint = new JAXRSServerFactoryBean(); 
     endpoint.setProviders(providers); 
     endpoint.setBus(bus); 
     endpoint.setAddress("/"); 
     endpoint.setServiceBeans(Arrays.asList(new MyService())); 
    } 

    @Bean 
    public JacksonJsonProvider getJsonProvider() { 
     new JacksonJsonProvider(); 
    } 
} 
+0

@BartoszBilicki如果這解決了問題,你能接受嗎? – yaswanth