2014-11-24 122 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