CXF: No message body writer found for class - automatically mapping non-simple resources

前端 未结 10 648
野的像风
野的像风 2020-12-08 03:59

I am using the CXF rest client which works well for simple data types (eg: Strings, ints). However, when I attempt to use custom Objects I get this:

Exceptio         


        
10条回答
  •  -上瘾入骨i
    2020-12-08 04:50

    When programmatically creating server, you can add message body writers for json/xml by setting Providers.

    JAXRSServerFactoryBean bean = new JAXRSServerFactoryBean();
    bean.setAddress("http://localhost:9000/");
    
    List providers = new ArrayList();
    providers.add(new JacksonJaxbJsonProvider());
    providers.add(new JacksonJaxbXMLProvider());
    bean.setProviders(providers);
    
    List> resourceClasses = new ArrayList>();
    resourceClasses.add(YourRestServiceImpl.class);
    bean.setResourceClasses(resourceClasses);
    
    bean.setResourceProvider(YourRestServiceImpl.class, new SingletonResourceProvider(new YourRestServiceImpl()));
    
    BindingFactoryManager manager = bean.getBus().getExtension(BindingFactoryManager.class);
    JAXRSBindingFactory restFactory = new JAXRSBindingFactory();
    restFactory.setBus(bean.getBus());
    manager.registerBindingFactory(JAXRSBindingFactory.JAXRS_BINDING_ID, restFactory);
    
    bean.create();
    
        

    提交回复
    热议问题