WebService-服务端与客户端
什么是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-服务端与客户端相关推荐
- Spring和CXF整合发布WebService(服务端、客户端)
参考Spring和CXF整合发布WebService(服务端.客户端) 转载于:https://www.cnblogs.com/timspace/p/11113576.html
- WebService服务端与客户端开发
最近客户提出了将我们做的系统接入到他们系统之中,方便他们进行集中管理这个需求,其中主要就是运用了WebService技术来进行系统之间的接入.在此记录一下整个WebService是如何嵌入我们系统的以 ...
- 简:webservice服务端及客户端开发
一.服务端开发 1️⃣接口 public interface WsServer {String sayHello(String name); } 2️⃣实现类 import javax.jws.Web ...
- WebService服务端与客户端调用示例
创建服务端 1.创建动态web工程:new - > Dynamic Web Project,新建类HelloService,添加sayHello(); public String sayHell ...
- XFire创建WebService服务端和客户端
WebService 接口在java中的开发 接口化自己的程序方法可以将自己的实现类进行一定程度的封装,只提供接口方法给其它程序,如果其它程序需要调用这个接口,它不再需要关心具体的实现,数据的如何处理 ...
- java cxf服务端代码_【JAVA】 cxf 生成 webservice 服务端代码
CXF Apache CXF = Celtix + XFire.CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding . ...
- 【REST】基于RESTful服务端的客户端实现(HttpClient、RestTemplate、HttpURLConnection)
最近一直在做针对webservice的接口协议对接,总结了一下基于restful服务端的客户端的实现方式,有以下三种: HTTPClient RestTemplate HttpURLConnectio ...
- spring5.x cxf3.4.x 服务端和客户端 非maven版本
文章目录 一.资料准备 1. 官网链接 2. 解压 3. 依赖梳理 二.spring集成cxf 2.1.创建spring项目 2.2. 创建接口 2.3. impl 2.4. spring-cxf.x ...
- axis idea 设置apache_利用IDEA创建Web Service服务端和客户端的详细过程
创建服务端 一.file–>new–>project 二.点击next后输入服务端名,点击finish,生成目录如下 三.在 HelloWorld.Java 文件中右击,选 WebServ ...
- PHP写webservice服务端
1) WebService技术介绍 WebService是一种跨编程语言和跨操作系统平台的远程调用技术.仅仅有通过Web Service,client和server才可以自由的用HTTP进行通信.不论 ...
最新文章
- Linux的常用的命令
- 029_CSS水平对齐
- Matlab | Matlab从入门到放弃(5)——矩阵与format
- Linux、Windows、Mac下Docker的安装与使用
- Mac 如何操控远程的 Windows 电脑
- tif 高程_使用ArcGIS提取高程点
- 顺丰同城:拟通过香港IPO发行1.31亿股H股 预期将于12月14日在港交所上市
- PostgreSQL实现时间按月,日,小时分组查询
- Docker 镜像基本命令操作
- 利用反射生成SQL语句
- Jquery—JQuery对select的操作(01)
- 复制VIM编辑的文件和代码到别的地方
- 男生追女生的超强数学建模分析
- 使用MVPArms框架时,访问网络没响应。
- google谷歌云盘_如何在酒店房间使用Google Chromecast?
- 读v_JULY_v整理笔试题博客有感,整理些答案。
- 解决tomcat在pycharm中的初始化报错“ Failed to transfer file”“could not create folder”“(Permission denied)”
- 中国菜刀使用教程--ctf 文件上传
- [网络安全自学篇] 一 web学习及异或解密
- 怎么远程控制别人电脑