一、创建一个基础springboot项目
1.创建项目
2.选择需要的依赖jar包(这里先不选择依赖)
3.创建完成
二、编写代码
1.修改pom.xml文件,引入依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.4.3</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.4.3</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.4.3</version>
</dependency>
</dependencies>
2.创建包和类
.
.
.
WebServiceConfig类
package com.demo.config;
import com.demo.webservice.WebServiceTest;
import org.apache.cxf.Bus;
import org.apache.cxf.bus.spring.SpringBus;
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 WebServiceConfig {
@Bean
public ServletRegistrationBean<CXFServlet> myServlet() {
return new ServletRegistrationBean<>(new CXFServlet(), "/soap/*");
}
@Bean(name = Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
return new SpringBus();
}
@Autowired
private WebServiceTest webServiceTest;
//去掉注释后:wsdl访问地址为:http://127.0.0.1:8080/soap/test?wsdl
@Bean
public Endpoint testEndpoint() {
EndpointImpl endpoint = new EndpointImpl(springBus(), webServiceTest);
endpoint.publish("/test");
return endpoint;
}
}
.
.
.
WebServiceTest接口
package com.demo.webservice;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
/**
* @author: gzc
* @createTime: 2021/5/18
* @description:
**/
@WebService(targetNamespace = WebServiceTest.TARGET_NAME_SPACE,
name = WebServiceTest.WEB_SERVICE_NAME)
public interface WebServiceTest {
String TARGET_NAME_SPACE = "http://tempuri.org/";
String WEB_SERVICE_NAME = "Service1Soap";
String GETSUM = "GetSum";
@WebMethod(operationName = GETSUM, action = WebServiceTest.TARGET_NAME_SPACE + GETSUM)
@RequestWrapper(localName = GETSUM, targetNamespace = WebServiceTest.TARGET_NAME_SPACE)
@ResponseWrapper(localName = "GetSumResponse", targetNamespace = WebServiceTest.TARGET_NAME_SPACE)
@WebResult(name = "GetSumResult", targetNamespace = WebServiceTest.TARGET_NAME_SPACE)
Integer getSum(
@WebParam(partName = "number1", name = "number1", targetNamespace = WebServiceTest.TARGET_NAME_SPACE)
Integer number1,
@WebParam(partName = "number2", name = "number2", targetNamespace = WebServiceTest.TARGET_NAME_SPACE)
Integer number2);
}
.
.
.
WebServiceTestImpl实现类
package com.demo.webservice.impl;
import com.demo.webservice.WebServiceTest;
import org.springframework.stereotype.Component;
import javax.jws.WebService;
import javax.xml.ws.BindingType;
import javax.xml.ws.soap.SOAPBinding;
/**
* @author: gzc
* @createTime: 2021/5/18
* @description:
**/
@Component
@BindingType(value = SOAPBinding.SOAP12HTTP_BINDING)
@WebService(
serviceName = "Service1Soap12",
portName = WebServiceTest.WEB_SERVICE_NAME,
targetNamespace = WebServiceTest.TARGET_NAME_SPACE,
endpointInterface = "com.demo.webservice.WebServiceTest")
public class WebServiceTestImpl implements WebServiceTest {
@Override
public Integer getSum(Integer number1, Integer number2) {
return number1+number2;
}
}
.
.
.
三、测试webservice接口
1.下载soapui测试软件
2.安装soapui ( 数据存储的盘符按需要修改一下,其他的步骤无脑下一步就OK了 )
4.打开soapui工具
5.创建项目
注意: wsdl路径地址是 你服务器的ip+端口+soap+配置中自定义的路径+?wsdl
6.添加请求参数,发起webservice请求并获取返回内容
.
.
.
就此写完一个简单的webservice接口示例了!!!