前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >webService简单入门实战(一)

webService简单入门实战(一)

作者头像
沁溪源
发布2021-05-18 10:29:47
4230
发布2021-05-18 10:29:47
举报
文章被收录于专栏:沁溪源

背景

首先谈论一下webService这个专栏的诞生吧!最近由于工作方面的原因,慢慢自己工作时间非常的“充沛”,整体为业务而忙,技能的提升方面脚步也略慢一些。由于前同事遗留的项目需要人接手,轮到小编无可厚非嘛,之前没有接触过webService相关的开发,由于小编在下班之后,在家寻找资料快速学习一下,能够快速上手开发和维护迭代项目,故此篇文章也能够帮助急需webService入门的伙伴们。

绪论

关于webService相关专栏,为什么小编没有直接介绍相关文档呢?相比大家可能更需要一个立竿见影的效果,于是小编先简单从一个DEMO入门,再者言,关于理论知识现在百度一大堆,小编也就不浪费时间搬运了,等后面针对小编的理解专门介绍,UDDI,WSDL,SOAP等等。

依赖

对于开发人员而言,新建项目、配置文件等等应该都是小菜一碟了,如若需要请自行百度或者私信小编。下面进入正题,引入webService的依赖:

代码语言:javascript
复制
	<dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
      <version>3.2.5</version>
    </dependency>
    <!-- 引入jetty依赖,类似将服务部署在tomcat容器中-->
    <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-transports-http-jetty</artifactId>
      <version>3.2.4</version>
    </dependency>

注意,此处基于服务端和客户端做的demo入门,故非整合springBoot框架,毕竟现在大家都是基于springBoot开发,后面专门介绍;

接口

第一次入门新语言,必然离不开HelloWorld,哈哈~

代码语言:javascript
复制
@WebService
public interface HelloWorldService {

    @WebMethod
    @WebResult(name = "getHelloWorld")
    String getHelloWorld(@WebParam(name = "userName") String userName, @WebParam(name = "age") int age);
}

@WebService 该注解用于对接口,类进行注解,表示要发布的web服务; @WebMethod 该注解用于用@WebService注解的类或接口的方法上,表示要发布的方法; @WebParam 注释用于定制从单个参数至 Web Service 消息部件和 XML 元素的映射,表示发布方法的参数; **@WebResult ** 注释用于定制从返回值至 WSDL 部件或 XML 元素的映射,表示发布方法的返回值; 简单了解上面的注解含义。

实现

代码语言:javascript
复制
public class HelloWorldServiceImpl implements HelloWorldService{

    @Override
    public String getHelloWorld(String userName, int age) {
        return "My name is " + userName + ", age is " + age;
    }
}

注意:细心的伙伴应该发现该实现类中并没有加任何的注解,此时并不需要将实现类注入spring容器中,大家可以简单理解为就是普通的Java类;

服务端

服务端主要的职责将需要服务发布到容器中;

代码语言:javascript
复制
public class ServerTest {
    public static void main(String[] args) {
        JaxWsServerFactoryBean jaxWsServerFactoryBean = new JaxWsServerFactoryBean();
        //设置服务地址
        jaxWsServerFactoryBean.setAddress("http://localhost:8999/cxfServer_01");
        //设置服务类
        jaxWsServerFactoryBean.setServiceClass(HelloWorldServiceImpl.class);
        //闯创建服务
        Server server = jaxWsServerFactoryBean.create();
        //启动服务
        server.start();
    }
}

客户端

代码语言:javascript
复制
public class ClientTest {
    public static void main(String[] args) {
        JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();
        jaxWsProxyFactoryBean.setAddress("http://localhost:8999/cxfServer_01");
        jaxWsProxyFactoryBean.setServiceClass(HelloWorldService.class);

        HelloWorldService helloWorldService = (HelloWorldService)jaxWsProxyFactoryBean.create();
        String world = helloWorldService.getHelloWorld("溪源", 24);
        System.out.println(world);

    }
}

注意,客户端肯定不需要知道服务具体的实现类,故jaxWsProxyFactoryBean.setServiceClass(HelloWorldService.class); 设置服务接口,从设计层面对外部也不会提供具体的实现,肯定对外部提供接口访问;

运行

从服务端console中可以看到服务是运行在jetty中,非tomcat中,故上面依赖中要引入jetty,否则报错。

然后看下客户端console,得到服务端的响应结果:

彩蛋

地址栏输入:http://localhost:8999/cxfServer_01

地址栏输入:http://localhost:8999/cxfServer_01?wsdl

下一篇文章将解释这个XML中具体标签的含义,敬请期待!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/05/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 绪论
  • 依赖
  • 接口
  • 实现
  • 服务端
  • 客户端
  • 运行
  • 彩蛋
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档