WebService
时间:2022-04-29
本文章向大家介绍WebService,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Web Service概述:
Web Service也叫XML Web Service。 WebService是一种轻量级的独立的通讯技术。是通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明。服务端提供服务供客户端调用, 具有夸平台跨语言的特性。
WSDL(Web Services Description Language):
WSDL 文件是一个 XML 文档,webservice服务需要通过wsdl文件来说明自己有什么服务可以对外调用。并且有哪些方法、方法里面有哪些参数, 一般由程序自动生成。
①. 一个webservice对应唯一一个wsdl文档 ②. 定义webservice服务器端和客户端数据如何交换。
Soap (Simple Object Access Protocol)简单对象存取协议:
是XML Web Service 的通信协议。webservice通过http协议发送和接收请求时, 发送的内容(请求报文)和接收的内容(响应报文)都是采用xml格式进行封装 , 这些特定的HTTP消息头和XML内容格式就是SOAP协议。
实例:
服务端:
@WebService
public interface IProductRemote {
@WebMethod
String topup(String name);
}
//实现
@WebService
public class ProductImpl implements IProductRemote{
@Override
public String topup(String name) {
return name + ",充值成功,请关注账户余额变更!";
}
}
//发布
Endpoint.publish("http://127.0.0.1:8080/topup", new ProductImpl());
System.out.println("publish suc!");
//访问
http://127.0.0.1:8080/topup?wsdl
--------------------------------
通过wsimport -keep http://127.0.0.1:8080/topup?wsdl生成服务代码并引入client
客户端:
@WebService(name = "ProductImpl", targetNamespace = "http://impl.remote.ws.com/")
@XmlSeeAlso({
ObjectFactory.class
})
public interface ProductImpl {
/**
*
* @param arg0
* @return
* returns java.lang.String
*/
@WebMethod
@WebResult(targetNamespace = "")
@RequestWrapper(localName = "topup", targetNamespace = "http://impl.remote.ws.com/", className = "com.ws.remote.impl.Topup")
@ResponseWrapper(localName = "topupResponse", targetNamespace = "http://impl.remote.ws.com/", className = "com.ws.remote.impl.TopupResponse")
@Action(input = "http://impl.remote.ws.com/ProductImpl/topupRequest", output = "http://impl.remote.ws.com/ProductImpl/topupResponse")
public String topup(
@WebParam(name = "arg0", targetNamespace = "")
String arg0);
}
//测试
ProductImplService service = new ProductImplService();
ProductImpl remote = service.getProductImplPort();
System.out.println(remote.topup("张三"));
控制台:
张三,充值成功,请关注账户余额变更!
- Spark的调度系统
- Spark Structured Streaming的高效处理-RunOnceTrigger
- Spark度量系统相关讲解
- Spark Structured Streaming高级特性
- Table API&SQL的基本概念及使用介绍
- 使用Linq to Sql 创建数据库和表
- Flink DataSet编程指南-demo演示及注意事项
- 解决 wcf HTTP 无法注册 另一应用程序正在使用 TCP 端口 80
- 构建Flink工程及demo演示
- F-Stack之kqueue封装为epoll介绍
- wcf http 返回图片
- F-Stack与Seastar对比
- Flink DataStream编程指南及使用注意事项。
- sqlserver 行转列
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PIMPL:休想窥探我的隐私!
- 树莓派基础实验37:pyserial模块通信实验
- 【答疑解惑】为什么你的 Charles 会抓包失败?
- Mybatis-generator 逆向工程 自定义PO,xml,mapper,example
- 高速上云/网络穿透/视频上云网关EasyNTS组网服务登录状态检测优化记录
- 树莓派基础实验38:逻辑分析仪分析PWM、UART信号
- 【终端设备】视频上云/网络穿透EasyNTS云组网硬件终端无法单独修改账号的优化方式
- 测试环境问题排查的那些事儿
- RTSP流媒体协议视频平台EasyNVR和EasyNTS智能云组网同一浏览器运行为什么会导致EasyNTS无法登陆?
- Java:手写线程安全LRU缓存X探究影响命中率的因素
- 视频上云/网络穿透/网络映射服务EasyNTS设备管理为什么会出现无法搜索到设备的情况?
- 快速打造属于你的接口自动化测试框架
- 大数据下的质量体系建设
- PostgreSQL 日志系统 及 设置错误导致磁盘塞满案例
- 六、乘胜追击,将剩下的Git知识点搞定