一、技术框架,工具
1.SpringBoot,Mybatis,
2.jdk1.8,Mysql,tomcat
基础概念自行度娘 彻底理解webservice SOAP WSDL 讲的比较详细
先是开发服务端接口,再开发客户端接口测试,也可以soapUI测试。
Webservice接口开发方式有几种,我也没仔细分析。自行度娘。
这次接口开发使用基于CXF的方式开发SOAP接口
二、开始
1.导依赖pom.xml
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.4.1</version>
</dependency>
2.创建配置类
import org.apache.cxf.Bus;
import org.apache.cxf.jaxws.EndpointImpl;
import org.apache.cxf.transport.servlet.CXFServlet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.xml.ws.Endpoint;
@Configuration
public class CxfConfig {
@Autowired
private Bus bus;
@Autowired
private IxxService xxjService;
@Bean("cxfServletRegistration")
public ServletRegistrationBean dispatcherServlet() {
//注册servlet 拦截/ws 开头的请求 不设置 默认为:/services/*
return new ServletRegistrationBean(new CXFServlet(), "/services/*");
}
@Bean
public Endpoint endpoint() {
EndpointImpl endpoint = new EndpointImpl(bus, xxjService);
endpoint.publish("/CancelService");//调用时wsdl前面的名称
return endpoint;
}
}
http://localhost:8080/services/CancelService?wsdl3.写接口和实现类
IxxService xxjService,自己写吧
接口方法名就是
接口
@WebService
public interface ICancelService {
@WebMethod
public String cancel(@WebParam(name = "xx") String xx);
}
实现类
@Component
@WebService(serviceName = "CancelService", targetNamespace = "http://service.xx.com.cn/", endpointInterface = "cn.com.xx.service.ICancelService")
public class CancelService implements ICancelService {
@Override
public String cancel(String xx) {
//将对象转换为String
return XmlUtil.convertToXml(bean);
}
@WebService注解里面的属性需要好好研究一下。
4.(可有可无)直接返回个String也行。
按照接口开发文档自行创建返回值。这回我的接口返回值是返回值为String,需要把返回对象转换为XML
对象类里需要标签注解
@XmlRootElement(name = "")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlElement(name = "")
使用的XmlUtil工具类 下面是用到的包JAXB, 具体自行度娘。
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
5.测试SoupUI方式
File-new SOAP project-取个名字
右键生成的文件 addWSDL-把地址输入
生成如下图,点击上面绿色播放按钮。
ser对应的就是接口方法名称
6.测试wsimport生成客户端方式,自行度娘
1.重新创建Web项目
2.用jdk bin目录下自带的wsimport.exe 在该文件夹下输入下面的命令会砸指定的目录下生成一套java文件,直接导入使用即可。具体实现度娘wsimport生成客户端。
这个接口服务需要打开的。在运行。
wsimport -keep -s F:\aa -s F:\bb -p com.cn -verbose http://localhost:8080/services/CancelService?wsdl
最后:
博客中整个开发过程只做了流程上的记录,细节上少了很多,可能复制粘贴并不能运行,只是提供开发思路。
每一道细节需要自己仔细研究,写出来的程序自己才懂,一味的复制粘贴,并没有营养。
我自己也是踩了很多的坑,才写出来的。
记录一个搜索方法,直接在网站内容搜索需要的内容,准确率,相关性会提高。比如直接在csdn中搜索soap接口开发。