打开这篇文章的伙伴们说明已经对WebService有所了解,我这里就不啰嗦理论了,直接上代码。
一、WebService 服务端
1、在pom里加入 CXF 框架所需的依赖
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.5.1</version>
</dependency>
2、 创建你服务端接口
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
/*
* @WebService 标记服务端点接口
* name:此属性的值包含XML Web Service的名称
* targetNamespace:指定你想要的名称空间,使用接口实现类的包名的反缀
*
* 如果不写这targetNamespace参数,你可以访问的wsdl,但是客户端动态调用invoke的时候,会找不到接口
*
* 这个接口的实现类上可以不添加@WebService注解
* */
@WebService(name = "studentService",targetNamespace = "http://service.testwebservice.demo.com")
public interface StudentService {
/*
* @WebMethod 接口的方法名
* operationName:方法名称
* exclude:用于阻止将某一继承方法公开为web服务,默认为false
* @WebParam 接口的参数
* 如果你不加 @WebParam(name = "param"),那么在你的wsdl 中的默认参数名就是 arg0
* */
@WebMethod
String getStudent(@WebParam(name = "param") String param);
}
3、实现接口
import org.springframework.stereotype.Component;
@Component
public class StudentServiceImpl implements StudentService {
public String getStudent(String param) {
// 打印客户端的参数
System.err.println(param);
return "查学历";
}
}
4、 自定义拦截器实现权限控制
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.headers