2016-11-26 1 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 서블릿

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

CXF 서비스로 @Path와 모든 스프링 빈을 등록

@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"을 가져올 것을 잊지 마십시오 . 그게 다야. :)

관련 문제