2016-11-26 90 views
0

我有一個Spring MVC應用程序,我試圖使用CXF(Jax-RS)公開REST服務。我無法理解如何註冊我的服務並使其可用。這裏是我的服務:如何註冊CXF Rest服務

@Path("/myservice/") 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
public interface MyService { 

     @POST 
     @Path("start") 
     public String start(){ 
      ........... 
     } 
    } 

到目前爲止,我設法避免任何配置文件,只使用註釋。那麼如何在沒有配置文件的情況下公開我的服務?我找不到文檔中的信息。

謝謝

回答

0

這是完整的答案。位和零件可以在online找到,但沒有一個完整的答案,易於遵循/實施。

我會跳過maven部分,因爲它很容易理解。

註冊CXF的Servlet

@WebServlet(urlPatterns="/*") 
public class CXFStartServlet extends CXFServlet { 
} 

註冊所有的Spring bean與@Path作爲CXF服務

@Configuration 
public class MyCxfConfig { 

@Autowired 
private ApplicationContext ctx; 

@Bean(name="cxf") 
public SpringBus springBus(){ 
    return new SpringBus(); 
} 

@Bean 
public Server jaxRsServer() { 
    LinkedList<ResourceProvider> resourceProviders = new LinkedList<ResourceProvider>(); 
    for (String beanName : ctx.getBeanDefinitionNames()) { 
     if (ctx.findAnnotationOnBean(beanName, Path.class) != null) { 
      SpringResourceFactory factory = new SpringResourceFactory(beanName); 
      factory.setApplicationContext(ctx); 
      resourceProviders.add(factory); 
     } 
    } 

    JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean(); 
    factory.setBus(ctx.getBean(SpringBus.class)); 
    factory.setProviders(Arrays.asList(new JacksonJsonProvider())); 
    factory.setResourceProviders(resourceProviders); 
    return factory.create(); 
} 
} 

不要忘記導入 「MyCxfconfig」 在你的Spring配置。這就是全部:)