当前位置: 首页 > news >正文

SpringBoot集成WebService

1)添加依赖

 <dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-spring-boot-starter-jaxws</artifactId><version>3.3.4</version><exclusions><exclusion><groupId>javax.validation</groupId><artifactId>validation-api</artifactId></exclusion></exclusions>
</dependency><dependency><groupId>com.sun.xml.ws</groupId><artifactId>jaxws-ri</artifactId><version>2.3.3</version><type>pom</type>
</dependency>

2)添加服务接口

public interface UserService {UserDTO getById(@WebParam(name="id") Integer id);
}

3)添加服务实现类

@Service
@WebService(targetNamespace = "http://www.xjs1919.com", serviceName = "userService"
)
public class UserServiceImpl implements UserService {@Overridepublic UserDTO getById(Integer id) {return new UserDTO(id, "hello_"+id);}
}

4)添加配置类

@Configuration
@Slf4j
public class WebServiceConfig {@Autowiredprivate UserService userService;/*** 注入Servlet,注意beanName不能为dispatcherServlet*/@Beanpublic ServletRegistrationBean cxfServlet() {return new ServletRegistrationBean(new CXFServlet(), "/webservice/*");}@Bean(name = Bus.DEFAULT_BUS_ID)public SpringBus springBus() {return new SpringBus();}@Beanpublic Endpoint endpoint() {EndpointImpl endpoint = new EndpointImpl(springBus(), userService);endpoint.publish("/userService");return endpoint;}}

5)启动应用,查看服务列表

浏览器访问:http://localhost:8888/webservice
在这里插入图片描述
点击WSDL后面的连接可以查看WSDL地址和内容:
在这里插入图片描述

6)测试

@Test
public void testGetById(){JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();Client client = dcf.createClient("http://localhost:8888/webservice/userService?wsdl");final ObjectMapper mapper = new ObjectMapper();try {Object[] objects = client.invoke("getById", 123);System.out.println(mapper.writeValueAsString(objects[0]));} catch (Exception e) {e.printStackTrace();;}
}

完整源码下载:https://github.com/xjs1919/enumdemo/tree/master/springboot-webservice

http://www.lryc.cn/news/321177.html

相关文章:

  • C++ Qt开发:QUdpSocket网络通信组件
  • 微信小程序小白易入门基础教程1
  • D. Tandem Repeats? - 思维 + 双指针
  • 第十三届蓝桥杯省赛CC++ 研究生组
  • Oracle中的commit与rollback
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(画布组件:OffscreenCanvasRenderingContext2D)
  • Redis如何实现主从复制?主从复制的作用是什么?Redis集群是如何工作的?它有哪些优点和缺点?
  • 【Numpy】(2)numpy对象和random模块
  • [QJS xmake] 非常简单地在Windows下编译QuickJS!
  • Ubuntu双系统/home分区扩容
  • 0基础学习VR全景平台篇第145篇:图层控件功能
  • 一文看懂套利的那些事儿
  • 【工具】Mermaid + 大模型画流程图
  • 内网渗透学习-环境搭建
  • el-progress渐变色
  • DHCP在企业网的部署及安全防范
  • 列表的常用操作
  • 外包2月,技术退步惊现!大专生逆袭大厂,全靠这份神秘资料!
  • 考研失败, 学点Java打小工_Day3_卫语句_循环
  • 网络架构层_服务器上下行宽带
  • 面试算法-47-有效的括号
  • Android11 HID开发系统源码配置
  • 73_Pandas获取分位数/百分位数
  • 力扣练习题
  • Telegraf--采集指定信息
  • Redis是如何实现持久化的?请解释RDB和AOF持久化方式的区别和优缺点。Redis是单线程还是多线程的?为什么Redis使用单线程模型仍然能保持高性能?
  • java通过Excel批量上传数据
  • VS2022 配置QT5.9.9
  • 接收用户输入的数字,判断是否是质数(素数)以及输出1-100之间的所有质数
  • 人脸识别AI视觉算法---豌豆云