2014-11-24 121 views
2

我試圖讓CXF和Sprint Boot很好地玩。我有一個名爲SubscriberApi的JAX-WS服務端點。縱觀春季啓動日誌我看到成功的映射:CXF與Spring-Boot

Mapping servlet: 'CXFServlet' to [/api/*] 
Setting the server's publish address to be /SubscriberApi 

但是,我不能打的時候似乎得到了WSDL:

http://localhost:8080/api/SubscriberApi?wsdl 
@Configuration 
@ImportResource({"classpath:META-INF/cxf/cxf.xml"}) 
public class CxfConfiguration { 
    @Bean 
    public SubscriberApi subscriberApi() { 
    return new SubscriberApi(); 
    } 
    @Bean 
    public ServletRegistrationBean servletRegistrationBean() { 
    CXFServlet cxfServlet = new CXFServlet(); 

    ServletRegistrationBean servletRegistrationBean = 
     new ServletRegistrationBean(cxfServlet, "/api/*"); 
    servletRegistrationBean.setLoadOnStartup(1); 
    return servletRegistrationBean; 
    } 
    @DependsOn("servletRegistrationBean") 
    @Bean 
    public Endpoint jaxwsEndpoint(SubscriberApi subscriberApi){ 
    javax.xml.ws.Endpoint jaxwsEndpoint = 
     javax.xml.ws.Endpoint.publish("/SubscriberApi", subscriberApi); 
     return jaxwsEndpoint; 
    } 
} 

回答

2

有你jaxwsEndpoint豆返回實例org.apache.cxf.jaxws.EndpointImpl,其延伸javax.xml.ws.Endpoint

@Autowired 
private ApplicationContext applicationContext; 

@DependsOn("servletRegistrationBean") 
@Bean 
public Endpoint jaxwsEndpoint(){ 
    Bus bus = (Bus) applicationContext.getBean(Bus.DEFAULT_BUS_ID); 
    EndpointImpl endpoint = new EndpointImpl(bus, subscriberApi()); 
    endpoint.publish("/SubscriberApi"); 
    // also showing how to add interceptors 
    endpoint.getServer().getEndpoint().getInInterceptors().add(new LoggingInInterceptor()); 
    endpoint.getServer().getEndpoint().getOutInterceptors().add(new LoggingOutInterceptor()); 

    return endpoint; 
} 

原始文章不包含可運行的示例,但這應該可以解決問題。

正在運行的例子可以在這裏找到,所有配置連接在一起: Application.java

0

現在,您可以通過添加使用與春季啓動CXF啓動自動配置:

<dependency> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-spring-boot-starter-jaxws</artifactId> 
    <version>3.1.7</version> 
</dependency> 

參見:http://cxf.apache.org/docs/springboot.html

+0

這很好,但不支持在cxf端點內引導彈簧 – rajadilipkolli 2017-01-13 19:15:14