什么是WebService

Web service:

  • 一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序
  • 可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序
  • 用于开发分布式的互操作的应用程序。

应用场景如,不用平台产品间接口调用,不同企业间接口调用

之前虽然一直又在写webService接口,但是没有关注到底是什么样的工作原理,这里小记一下。

简单实现

模拟学生成绩查询,服务端提供调用接口,客户端(第三方)通过webService查询

服务端接口和实现类编写

//接口
public interface StudentScore {public String getScoreById(String studentId);
}//实现类
@WebService
public class StudentScoreImpl implements StudentScore {@Overridepublic String getScoreById(String studentId) {out.print("获取学生成绩,学生id:"+ studentId);if("just".equalsIgnoreCase(studentId)){return "A";}else{return "B";}}
}

其中,实现类需要添加 @WebService注解

发布WebService服务

public class Service {/*** 开启,并发布webService服务* @param args*/public static void main(String args[]){//定义webService地址: ip+portString addr = "http://127.0..0.1:3306/student";StudentScoreImpl studentScore = new StudentScoreImpl();//发布服务 地址+服务实现类Endpoint.publish(addr, studentScore);}
}

运行main方法,然后通过访问 http://127.0.0.1:3306/student?wsdl ,可以看到webService服务信息,如:Servcie调用方法

<service name="StudentScoreImplService"><port name="StudentScoreImplPort" binding="tns:StudentScoreImplPortBinding"><soap:address location="http://127.0.0.1:3306/student"/></port>
</service>

自动生成客户端执行类

  • 目的,提供给第三方调用

  • 方法,可以使用jdk自带的wsimport.exe的工具,常用命令参数:

参数 含义
-d 生成class文件存放目录
-s 生成java源码文件存放目录
-p 生成自定义包路径

例如,执行命令:

C:\Users\TCLDUSER>wsimport -d d:\ws-test\class -s d:\ws-test\java -p webs.studen
t http://127.0.0.1:3306/student?wsdl

关键点是 wsimport命令 以及参数wsdl地址

生成的文件如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e9p8KCe4-1586242066011)(http://ok2uxdyx6.bkt.clouddn.com/webservice2.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DP3MynRy-1586242066012)(http://ok2uxdyx6.bkt.clouddn.com/webservice.png)]

客户端调用接口

将上一步生成的java源码文件可以copy至其他项目中进行使用

客户端调用代码:

import webs.student.StudentScoreImplService;public class Client {public static void main(String args[]){System.out.println("客户端查询学生成绩信息");//调用自动生成的执行服务类StudentScoreImplService service = new StudentScoreImplService();//获取接口实现类webs.student.StudentScoreImpl studentScore = service.getStudentScoreImplPort();String score = studentScore.getScoreById("just");System.out.println(score);}
}

客户端输出日志:

客户端查询学生成绩信息
A

服务端输出日志:

获取学生成绩,学生id:just

当然,webService最大的优势在于使用xml传递参数信息,利用JavaBean与xml之间的互相转换来实现接口的调用。

使用CXF

使用上,需要添加额外的cxf环境变量配置:

  • CXF_HOME:D:\runtime\apache-cxf-2.7.18
  • PTTH:%CXF_HOME%\bin;
  • CLASSPATH:%CXF_HOME%/lib

然后将命令 wsimport 换为 wsdl2java,如

wsdl2java -d d:\ws-test\test  -p ws.service.web.wsdl http://127.0.0.1:12345/weather?wsdl

WebService-服务端与客户端相关推荐

  1. Spring和CXF整合发布WebService(服务端、客户端)

    参考Spring和CXF整合发布WebService(服务端.客户端) 转载于:https://www.cnblogs.com/timspace/p/11113576.html

  2. WebService服务端与客户端开发

    最近客户提出了将我们做的系统接入到他们系统之中,方便他们进行集中管理这个需求,其中主要就是运用了WebService技术来进行系统之间的接入.在此记录一下整个WebService是如何嵌入我们系统的以 ...

  3. 简:webservice服务端及客户端开发

    一.服务端开发 1️⃣接口 public interface WsServer {String sayHello(String name); } 2️⃣实现类 import javax.jws.Web ...

  4. WebService服务端与客户端调用示例

    创建服务端 1.创建动态web工程:new - > Dynamic Web Project,新建类HelloService,添加sayHello(); public String sayHell ...

  5. XFire创建WebService服务端和客户端

    WebService 接口在java中的开发 接口化自己的程序方法可以将自己的实现类进行一定程度的封装,只提供接口方法给其它程序,如果其它程序需要调用这个接口,它不再需要关心具体的实现,数据的如何处理 ...

  6. java cxf服务端代码_【JAVA】 cxf 生成 webservice 服务端代码

    CXF Apache CXF = Celtix + XFire.CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding . ...

  7. 【REST】基于RESTful服务端的客户端实现(HttpClient、RestTemplate、HttpURLConnection)

    最近一直在做针对webservice的接口协议对接,总结了一下基于restful服务端的客户端的实现方式,有以下三种: HTTPClient RestTemplate HttpURLConnectio ...

  8. spring5.x cxf3.4.x 服务端和客户端 非maven版本

    文章目录 一.资料准备 1. 官网链接 2. 解压 3. 依赖梳理 二.spring集成cxf 2.1.创建spring项目 2.2. 创建接口 2.3. impl 2.4. spring-cxf.x ...

  9. axis idea 设置apache_利用IDEA创建Web Service服务端和客户端的详细过程

    创建服务端 一.file–>new–>project 二.点击next后输入服务端名,点击finish,生成目录如下 三.在 HelloWorld.Java 文件中右击,选 WebServ ...

  10. PHP写webservice服务端

    1) WebService技术介绍 WebService是一种跨编程语言和跨操作系统平台的远程调用技术.仅仅有通过Web Service,client和server才可以自由的用HTTP进行通信.不论 ...

最新文章

  1. Linux的常用的命令
  2. 029_CSS水平对齐
  3. Matlab | Matlab从入门到放弃(5)——矩阵与format
  4. Linux、Windows、Mac下Docker的安装与使用
  5. Mac 如何操控远程的 Windows 电脑
  6. tif 高程_使用ArcGIS提取高程点
  7. 顺丰同城:拟通过香港IPO发行1.31亿股H股 预期将于12月14日在港交所上市
  8. PostgreSQL实现时间按月,日,小时分组查询
  9. Docker 镜像基本命令操作
  10. 利用反射生成SQL语句
  11. Jquery—JQuery对select的操作(01)
  12. 复制VIM编辑的文件和代码到别的地方
  13. 男生追女生的超强数学建模分析
  14. 使用MVPArms框架时,访问网络没响应。
  15. google谷歌云盘_如何在酒店房间使用Google Chromecast?
  16. 读v_JULY_v整理笔试题博客有感,整理些答案。
  17. 解决tomcat在pycharm中的初始化报错“ Failed to transfer file”“could not create folder”“(Permission denied)”
  18. 中国菜刀使用教程--ctf 文件上传
  19. [网络安全自学篇] 一 web学习及异或解密
  20. 怎么远程控制别人电脑

热门文章

  1. 毕业设计 嵌入式太空游戏机设计与实现
  2. 用74ls00,74ls153,74ls151,74ls138设计三变量表决器
  3. 高等数学:第七章 空间解析几何(1)空间解析几何与向量代数
  4. Microsoft Project——Project基本使用教程
  5. 方大东莞新材:实习总结报告PPT讲稿
  6. ShadowGun 体积光学习
  7. linux生成手机号码字典,字典生成器,木头超级字典生成器
  8. 一些PDG格式的Linux书籍(转)
  9. 宗宁:企业微博品牌榜的新时代意义
  10. 古力乐简易网址导航综合搜索引擎站html源码