2017-08-07 79 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