一、技术框架,工具

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对应的就是接口方法名称

SOAP协议java soap协议接口开发_CXF

 

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接口开发。