1.简单使用

1.1.服务端

1.编写接口

 1 package com.day02.sation.ws;
 2
 3 /**
 4  * Created by Administrator on 1/12.
 5  */
 6 public interface ITicket {
 7     /**
 8      *
 9      * @param userName
10      * @return
11      */
12     public String buyTicket(String userName);
13
14     /**
15      *
16      * @param id
17      * @return
18      */
19     public String getTicket(String id);
20 }

2.编写实现类

注意实现类上贴标签@WebService

 1 package com.day02.sation.ws;
 2
 3 import javax.jws.WebService;
 4
 5 /**
 6  * Created by Administrator on 1/12.
 7  */
 8 @WebService
 9 public class TicketImpl implements ITicket {
10     @Override
11     public String buyTicket(String userName) {
12         System.out.println("userName = "+userName);
13         return "购票成功";
14     }
15
16     @Override
17     public String getTicket(String id) {
18         System.out.println("id = "+id);
19         return "成都-南充";
20     }
21 }

3.发布服务

 1 package com.day02.sation.ws;
 2
 3 import javax.xml.ws.Endpoint;
 4
 5 /**
 6  * Created by Administrator on 1/12.
 7  */
 8 public class TestWs {
 9     /**
10      * 发布服务
11      * @param args
12      */
13     public static void main(String[] args) {
14         Endpoint.publish("http://127.0.0.1:11111/ticket",new TicketImpl());
15         System.out.println("------发布成功----");
16     }
17 }

4.检查服务示范发布成功

浏览器上访问:http://127.0.0.1:11111/ticket,结果如下图:

点击后文档如下,则发布成功

服务端发布完成!

1.2.客户端

对于客户端,我们可利用只用java中的wsimport来自动生成客户端代码。使用Wsimport生成客户端调用代码,在jdk的安装目录的bin目录中,有一个wsimport命令。
        可以根据wsdl文档生成客户端调用代码。
       新建一个java工程WebServiceClient,然后到这个工程的src目录下面,在src目录下通过cmd运行以下命令:(注意空格)
       wsimport -s . http://127.0.0.1:11111/ticket?wsdl
      如下图所示:

生成后的代码结构如图所示:

编写客户端测试类:

 1 package com.day02.sation.ws;
 2
 3 /**
 4  * Created by Administrator on 1/12.
 5  */
 6 public class TestClient {
 7     public static void main(String[] args) {
 8         //获取服务类
 9         TicketImplService ticketImplService = new TicketImplService();
10         //获取到接口
11         TicketImpl ticketImplPort = ticketImplService.getTicketImplPort();
12         //调用接口购票方法
13         String str1 = ticketImplPort.buyTicket("wuji");
14         System.out.println("str1 = "+str1);
15         //调用接口查询车票方法
16         String str2 = ticketImplPort.getTicket("18");
17         System.out.println("str2 = "+str2);
18     }
19 }

执行客户端测试代码

客户端如下效果:

服务端执行如下:

2.webservice介绍

Webservice:跨语言跨平台的远程调用技术。Web service 即web服务,它是一种跨编程语言和跨操作系统平台的远程调用技术即跨平台远程调用技术。
Java 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC)、JAXM&SAAJ、JAX-RS。
webService三要素:soap、wsdl、uddi
JAX-WS 的全称为 Java API for XML-Based Webservices ,早期的基于SOAP 的JAVA 的Web 服务规范JAX-RPC(Java API For XML-Remote Procedure Call).
JAXM(JAVA API For XML Message)主要定义了包含了发送和接收消息所需的API,SAAJ(SOAP With Attachment API For Java,JSR 67)是与JAXM 搭配使用的API,为构建SOAP 包和解析SOAP 包提供了重要的支持,支持附件传输等.
JAX-RS 是JAVA 针对REST(Representation State Transfer)风格制定的一套Web 服务规范.

2.1. 应用场景

在做企业整体信息化时,企业中一般都或多或少的存在一些既存系统,这些各种各样的系统不可能全部推翻,重新规划和开发,因为很多供应商在某一领域也做的很专业,博众家之长并进行集成应该是一个比较现实和可取的做法。

各个系统之间通过WebService进行集成,不仅缩短了开发周期,降低了风险,还减少了代码复杂度,并能够增强应用程序的可维护性,因为webservice支持跨平台且遵循标准协议(soap)。
将一个软件的功能以webservice方式暴露出来,达到软件重用。例如上边分析的天气预报,将天气查询功能以webservice接口方式暴露出来非常容易集成在其它系统中;再比如一个第三方物流系统将快递查询、快递登记暴露出来,从而集成在电子商务系统中。

2.2. soap协议

SOAP 是一种网络通信协议
SOAP即Simple Object Access Protocol简易对象访问协议
SOAP 用于跨平台应用程序之间的通信
SOAP 被设计用来通过因特网(http)进行通信
SOAP = HTTP+XML,其实就是通过HTTP发xml数据
SOAP 很简单并可扩展支持面向对象
SOAP 允许您跨越防火墙
Socket是所有通信的基础也是语言个无关平台无关。
Socket使用的是tcp协议,传输效率高。适合传递大数据高并发场景,高并发的情况需要实现多线程并且使用到线程池,编码复杂。Sockt的高并发框架mina。
Socket只是流的传输,传输的格式需要程序员自己定义。
Webservice使用的是soap协议,soap协议基于http协议的应用层协议,本质就是http+xml。Soap协议是w3c标准,传输效率低。使用传输数据不是太大的场合,也是支持高并发的,受限于web容器。支持soap协议和wsdl两者都是国际通用标准,不需要自定义数据格式,只需要面向对象开发。

2.3.wsdl介绍

Webservice的使用说明书。描述了webservice的服务地址以及webservice服务接口、参数、返回值,该文档阅读从下面往上面阅读
    1.先找service节点:每个wsdl中,有且只有一个service节点。也叫服务视图节点。service中有port节点服务端端口。
    2.根据port节点的binding属性找binding节点。根据binding节点的type属性找portType节点。
    3.portType节点就是我们定义的SEI服务的接口类型。Prottype中的operation 节点就是方法名称。
    4.operation 节点的input就是参数的定义,output就是返回值的定义。
    5.Input有个属性叫做message,message属性对应message节点。其中有一个element,对应element节点。
    6.Element节点定义中xsd中。定义了数据的类型。参数和返回值都在其中定义。

节点作用:

definitions: 根节点,name属性是在服务类基础上+Service后缀
     service: 服务节点,描述服务的名称和地址
     binding:服务绑定节点,定义访问方式和WSDL文件的编写规范
     portType:接口名,定义服务方法名称等信息
     message:消息,定义请求和响应的方法名、参数名及参数类型

转载于:https://www.cnblogs.com/newAndHui/p/8275375.html

大型运输行业实战_day14_1_webserivce简单入门相关推荐

  1. 大型运输行业实战_day12_1_权限管理实现

    1.业务分析 权限说的是不同的用户对同一个系统有不同访问权限,其设计的本质是:给先给用户分配好URL,然后在访问的时候判断该用户是否有当前访问的URL. 2.实现 2.1数据库设计标准5表权限结构 2 ...

  2. ElasticSearch分布式搜索引擎从入门到实战应用(入门篇-基本命令操作)

    ElasticSearch分布式搜索引擎从入门到实战应用(入门篇) 1.入门须知 2.ElasticSearch概述 2.1.ES简介 2.2.应用场景 3.ES和Solr的对比 3.1.ES作用 3 ...

  3. 4大行业实战案例,深度解析数字化转型升级路径

    ​本篇文章为亿信华辰<4大行业实战案例,深度解析数字化转型升级路径>视频直播稿件. 大家晚上好,欢迎来到小亿直播间!今天主讲的内容是以4个行业的典型应用为背景,给大家讲讲数字化转型的项目是 ...

  4. 视频教程-Java大型企业级项目实战:VOD展示系统-Java

    Java大型企业级项目实战:VOD展示系统 系统分析师,项目经理,特级讲师:11年项目经验,8年教学经验:在多个大型企业级项目中担任过重要角色. 肖海鹏 ¥479.00 立即订阅 扫码下载「CSDN程 ...

  5. 分布式锁简单入门以及三种实现方式介绍(滴滴)

    很多小伙伴在学习Java的时候,总是感觉Java多线程在实际的业务中很少使用,以至于不会花太多的时间去学习,技术债不断累积!等到了一定程度的时候对于与Java多线程相关的东西就很难理解,今天需要探讨的 ...

  6. Git快速入门篇—— Windows版本淘宝镜像快速下载安装详细步骤及简单入门教程(附带图文教程)

    Git快速入门篇-- Windows版本淘宝镜像快速下载安装详细步骤及简单入门教程(附带图文教程) 前言:我们平时在整理代码的时候,尤其是与别人一起开发项目的时候,常常涉及到代码的更新,因此代码版本问 ...

  7. 2022-2027年中国国际货物运输行业市场深度分析及投资战略规划报告

    [报告格式]电子版.纸介版 [出品单位]华经产业研究院 本报告由华经产业研究院出品,对中国国际货物运输行业的发展现状.竞争格局及市场供需形势进行了具体分析,并从行业的政策环境.经济环境.社会环境及技术 ...

  8. Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习

    Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习 目录 Python 基础 之 jupyter notebook 中机器学习的简单入门书写 ...

  9. 【CMS建站】写给大家看的网站制作教程03—零基础学网站制作的简单入门指南...

    作者 | 杨小爱 来源 | web前端开发(ID:web_qdkf) 在上一篇<[CMS建站]写给大家看的网站制作教程02-网站制作的工具介绍与下载安装>文章中,我详细的讲解了关于制作一个 ...

最新文章

  1. 2018年GPS定位器会发生什么样变化?
  2. 准官宣?余承东证实华为已有自研操作系统
  3. php 阻塞消息队列,linux 消息队列阻塞
  4. Vue.js 笔记之 img src
  5. Spring boot配置log4j输出日志
  6. Ubuntu 设置下载路径
  7. 在ne中分析贱谈.net中简体转繁体
  8. Asp.net页面事件引发后台程序处理原理【转】
  9. C++对带有分隔符的字符串 分割为数字的通用解决方案
  10. Process Explorer更新至v15.2
  11. 暖心社区(2018-07-17)
  12. 敏捷开发之团队级经验分享
  13. SQL2016安装错误:安装程序无法与下载服务器联系。请提供 Microsoft R Open 和 Microsoft R Server 安装文件的位置
  14. jsp+mysql校园卡管理系统设计与实现
  15. 几款实用Chrome插件
  16. 易经六十四卦详解白话文解释——易经64卦全解(下)
  17. iOS视图成像理论及性能优化
  18. MATLAB数学建模-规划模型总结| MATLAB求解
  19. 计算机终端网络准入管理规定,网络准入与终端安全.doc
  20. 找出一个二维数组中的鞍点,即该位置上的的元素,在该行上最大,该列上最小,也可能没有鞍点

热门文章

  1. C#命名规范 C#控件的缩写大全
  2. 【0729作业】随机生成20个手机号码
  3. Python 基于Python从mysql表读取千万数据实践
  4. 转载自搜狐科技【技术那些事儿】LTE网络中的用户数据库HSS与传统2G/3G的HLR有何区别?能否融合组网?...
  5. viewholder
  6. 关于linux内存管理
  7. UVA 103 Stacking Boxes 套箱子 DAG最长路 dp记忆化搜索
  8. Linux文件类型有哪些?
  9. ICSharpCode.SharpZipLib 压缩
  10. BATZ,一份《Android架构开发手册》就够,已offer