配置cxf
server—
1.导入依赖
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.6</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.6</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.2.4</version>
</dependency>
2.定义接口 打注解
package com.example.de1;
import javax.jws.WebService;
@WebService()
public interface HelloWorld {
public String sayHello(String name);
}
3.编写接口实现类
package com.example.de1;
import javax.jws.WebService;
@WebService(/*targetNamespace = "http://de1.example.com/"*/)
public class HelloWorldImpl implements HelloWorld {
@Override
public String sayHello(String name) {
return "hello world";
}
}
使用cxf发布服务
package com.example.de1;
import org.apache.cxf.endpoint.Server;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Component
public class runner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
// //第一种发布方式:通过CXF提供的JaxWsServerFactoryBean来发布webservice
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
factory.setServiceClass(HelloWorldImpl.class);
factory.setAddress("http://localhost:8081/HelloWorld");
Server server = factory.create();
server.start();
}
}
client
编写interface 引用发布服务
package com.example.de2;
import javax.jws.WebService;
@WebService(targetNamespace = "http://de1.example.com/")
public interface HelloWorld {
public String sayHello(String name);
}
使用cxf代理调用
public static void main(String[] args) {
//代码中调用
JaxWsProxyFactoryBean bean = new JaxWsProxyFactoryBean();
bean.setServiceClass(HelloWorld.class);
bean.setAddress("http://localhost:8081/HelloWorld?wsdl");
HelloWorld helloWorldService = (HelloWorld)bean.create();
String result = helloWorldService.sayHello("Kevin");
System.out.println(result);
}