我这里用的cxf框架来搭建webService服务
我的SpringBoot版本为2.7.5
查看项目springBoot版本的方法:
1.
- 写测试类,打印springBoot版本
@Test void version(){ System.out.println(SpringBootVersion.getVersion()); }
服务端
1 导入cxf依赖
<!-- cxf -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-features-logging</artifactId>
<version>3.5.5</version>
</dependency>
我直接选的3.5.5版本,最后可以成功运行。
2 编写接口类
package com.example.service;
import javax.jws.WebService;
/**
* @author A
* @date 2023-01-31 11:39:31
* @description
*/
@WebService(name = "myService",//向外暴露的服务名称
targetNamespace = "http://service.example.com"//命名空间,一般是接口的包名倒序
)
public interface MyWebService {
public String testMyService();
}
3 接口实现类
package com.example.service.impl;
import com.example.service.MyWebService;
import org.springframework.stereotype.Component;
import javax.jws.WebService;
/**
* @author A
* @date 2023-01-31 12:11:21
* @description
*/
@WebService(name = "myService",//向外暴露的服务名称
targetNamespace = "http://service.example.com",//与接口中的命名空间一致
endpointInterface = "com.example.service.MyWebService"//接口全限定名,注意不是实现类
)
@Component
public class MyWebServiceImpl implements MyWebService {
@Override
public String testMyService() {
return "我的第一个webSerivce服务";
}
}
4 cxf配置文件
package com.example.config;
import com.example.service.impl.MyWebServiceImpl;
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.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 {
//默认servlet路径/*,可自定义
@Bean
public ServletRegistrationBean disServlet() {//此bean名不可为dispatcherServlet,否则启动时会异常
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new CXFServlet(), "/webService/*");//服务访问地址为ip:端口/webService
return servletRegistrationBean;
}
@Bean(name = Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
return new SpringBus();
}
@Bean
public Endpoint endpoint1(){
EndpointImpl endpoint = new EndpointImpl(springBus(), new MyWebServiceImpl());
endpoint.publish("/myService");//这个webService的访问地址
return endpoint;
}
}
5 启动springboot项目
浏览器访问地址:localhost:端口/webService,会列出所有服务
看到这个说明服务发布成功。
测试发布的服务
我用的是SoapUI工具进行webService服务测试
点击运行后的返回值是正确的