pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-parent</artifactId>
<version>1.4.5.RELEASE</version>
</parent>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.1.12</version>
</dependency>
</dependencies>
java代码
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService(name = "helloService", targetNamespace = "http://service.cxf01.sky.com/")
public interface HelloService {
@WebMethod
String SayHello(@WebParam(name = "msg") String msg);
}
@Service
public class HelloServiceImpl implements HelloService {
@Override
public String SayHello(String msg) {
return "Hello, " + msg;
}
}
import javax.xml.ws.Endpoint;
import org.apache.cxf.Bus;
import org.apache.cxf.jaxws.EndpointImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.sky.cxf01.service.HelloService;
@Configuration
public class CxfConfig {
@Autowired
private Bus bus;
@Autowired
private HelloService helloService;
@Bean
public Endpoint endpoint() {
Endpoint endpoint = new EndpointImpl(bus, helloService);
endpoint.publish("/helloService");
// 访问连接: http://localhost:8080/services/helloService?wsdl
// /services是cxf的默认路径,可以通过配置 cxf.path=xxx(application.properties)来修改
return endpoint;
}
@Bean
// 如果发布多个服务
public Endpoint endpoint2() {
Endpoint endpoint = new EndpointImpl(bus, helloService);
endpoint.publish("/helloService2");
// 访问连接: http://localhost:8080/services/helloService2?wsdl
return endpoint;
}
}
@SpringBootApplication
public class CxfServerApplication {
public static void main(String[] args) {
SpringApplication.run(CxfServerApplication.class, args);
}
}
启动后访问
访问连接:
http://localhost:8080/services/helloService?wsdl
生成客户端测试
https://blog.csdn.net/qq_26264237/article/details/97040977
调用客户端生成的代码不需要引用第三方依赖
public class DemoClient {
@Test
public void testCxfServer() {
HelloService service = new HelloServiceImplService().getHelloServiceImplPort();
String sayHello = service.sayHello("Lebron");
System.err.println("sayHello=" + sayHello);
// sayHello=Hello, Lebron
}
}