2016-11-26 5 views
0

У меня есть приложение Spring MVC, и я пытаюсь открыть службу REST с помощью CXF (Jax-RS). Я не могу понять, как зарегистрировать мой сервис и сделать его доступным. Вот моя служба:Как зарегистрировать службы CXF Rest

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

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

До сих пор мне удалось избежать любого файла конфигурации, используя аннотации. Итак, как мне разоблачить мою службу без файла конфигурации? Я не смог найти информацию в документации.

Thanks

ответ

0

Вот полный ответ. Биты и детали можно найти online, но нигде не было полного ответа, который можно легко выполнить и реализовать.

Я пропущу часть maven, так как это довольно легко понять.

Регистрация CXF Servlet

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

Регистрация всей пружинной фасоли с @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 , Вот и все :)