分布式.RPC-WebService入门案例(java实现,注解实现,xsd文件解析,wsdl文件解析)
系列博文:
分布式.RPC调用-RMI & Hessian框架_闲猫的博客-CSDN博客
分布式.RPC-WebService三要素,三个规范, Soap协议_闲猫的博客-CSDN博客
分布式.RPC-WebService入门案例(java实现,注解实现,xsd文件解析,wsdl文件解析)_闲猫的博客-CSDN博客
分布式.RPC调用-RMI & Hessian框架_闲猫的博客-CSDN博客
分布式.RPC-WebService CXF框架_闲猫的博客-CSDN博客
分布式.RPC-WebService Restful风格实现_闲猫的博客-CSDN博客
目录
入门案例
服务端
客户端
WSDL文件解析
xsd文件解析
注解开发
@WebService
@WebMethod()
@WebParam(name="a")
@WebResult(name="r")
特点:跨平台、跨语言、但速度比较慢
场景:适用于异构系统之间的调用,比如:两个厂家实现的系统彼此调用
协议:基于SOAP协议(应用层
入门案例
服务端
步骤:
- 创建一个java工程
- 编写提供服务的类
- 发布服务的方法
- 测试
实现:
1. 创建一个java工程
2. 编写提供服务的类(服务类)
模型类:
public class Member implements Serializable[ww1] {
private static final long serialVersionUID = -7197511997605564716L;
private Integer uuid;
private String name;
// 有参/无参构造方法
// setter/getter方法
// toString方法
}
[ww1]就是一个实现了Serializable [ww1]接口的JavaBean
业务实现类:
@WebService[ww1]
public class MemberService {
public String get(Integer i) {
return "张三";
}
public Member getMember(String sn) {
return new Member(11, "赵芸");
}
public String setMember(Member member) {
return member.toString();
}
}
[ww1]必须写该主键否则报错
【注意】(服务类使用@WebService注解)如没有注解将报错:
Exception in thread "main" java.lang.IllegalArgumentException: class cn.itcast.Service.MemberService has neither @WebService nor @WebServiceProvider annotation
3. 发布服务的方法
public static void main(String[] args) {
//第一个参数:发布的地址
//第二个参数:该地址对应的服务类
Endpoint.publish("http://localhost:23456/member", new MemberService());
}
4. 测试
URL地址:http://localhost:23456/member
点击:http://localhost:23456/member?wsdl
出来这个就标识服务发布成功。
客户端
步骤:
- 创建java工程
- 生成本地代码
- 调用远程服务
实现:
1. 创建java工程
2. 生成本地代码
进入工程src目录下,使用指令:“wsimport –s . 发布地址?wsdl”,在CMD下执行。如下图:
【说明】wsimport指令
1. 该指令是JDK下指令
2.直接使用的前提是已经配置了JDK环境变量
3.如果没有配置环境变量,还想直接使用,先执行
Path D:\JavaConfig\Java\jdk1.7.0_72\bin (jdk路径,到bin一级)
再执行wsimport 指令
【生成的代码】
3. 调用远程服务
- 第一种方式:
public static void main(String[] args) {
MemberServiceService memberService = new MemberServiceService();[ww1]
MemberService memberServicePor =
memberService.getMemberServicePort()[ww2] ;
Member mem = memberServicePor.getMember("");
System.out.println(mem.getName() + " " + mem.getUuid());
}
[ww1]用来产生接口
[ww2]获取接口
内部实现:
MemberServiceService代码:
@WebServiceClient(name = "MemberServiceService", argetNamespace = "http://Service.itcast.cn/", wsdlLocation = "http://localhost:23456/member?wsdl")
public class MemberServiceService extends Service
{
static {
URL url = null;
try {
url = new URL("http://localhost:23456/member?wsdl");
} catch (MalformedURLException ex) {
}
}
@WebEndpoint(name = "MemberServicePort")
public MemberService getMemberServicePort() {
return super.getPort(new QName("http://Service.itcast.cn/",
"MemberServicePort"), MemberService.class);
}
}
- 第二种方式:
从第一种实现的源码中看第二种实现方式。
public static void main(String[] args) {
try {
URL url[ww1] = new URL("http://localhost:23456/member?wsdl");
QName qname [ww2] = new QName("http://Service.itcast.cn/",
"MemberServiceService");
Service service = Service.create[ww3] (url, qname);
MemberService memberservice =
service.getPort(MemberService.class)[ww4] ;
Member mem = memberservice.getMember("");
System.out.println(mem.getName() + " " + mem.getUuid());
} catch (Exception e) {
e.printStackTrace();
}
}
[ww1]在哪里找
[ww2]找什么
[ww3]创建服务对象
[ww4]根据Service类获取接口对象,即:提供服务的对象
WSDL文件解析
WSDL (Web Service Description Language) WebService描述语言,是WebService发布服务的描述,相当于WebService的使用说明书。通常一个WSDL文件描述的是一个服务类提供的服务的描述。
描述的内容包括:
该服务类提供接口需要的模型类(返回值、形参;在类中的模型不进行模式)
对外提供的接口(方法描述:方法名、形参列表和返回值)
绑定的服务对象以及服务对象是啥
以下图示WSDL的内容:
xsd文件解析
XSD文件是描述使用过程中的一些模型类,以及一些基本类的包装类(这个包装类不是Integer和Double等这种,而是将getEember、getMemberResponse这种类型)。
以下是XSD文件解析:
注解开发
这里说的注解只是用来修改在客户端方法、变量的名称以及类的名称,可以和原始的方法名称、变量名、类名不同。这样就可以隐藏服务器内部的实现。
注解包括四个:@WebService、@WebMethod、@WebParam、@WebResult。分别代表:服务类、方法、形参、返回值。
以下是注解的位置,参考位置所在:
@WebService
注解写的位置:(MemberService是服务类)
【说明】服务类和接口类不同
在WebService服务端生成WSDL中有两种类对外提供服务,这两个类对应的是我们在服务端写的服务类,这两个类一个是服务类,各类就好似对外提供了一个服务,你可以根据调用不同的接口,来完成不同的功能。另一种是接口类,就是对外提供接口的类,用来实现具体的功能,其实这是一个接口,对外提供的接口就是定义服务类提供的接口。而服务类中提供的是获取各个接口的方法,比如:getMemberPoint用来获取接口。
比如:现在一个学生管理系统,对外只提供一个服务器类,但学生管理系统下有不同的模块,那就是不同的接口类实现啦。
服务类和接口类在调用中的关系如下:
一个服务类对应的是一个WSDL文件。
serviceName="abc"
用来修改服务类的类名,下面是WSDL文件中的变化
name="xyz"
用来修改接口的类名,下面是WSDL文件中的变化
targetNamespace=http://it.baidu.com
用来修改一个服务类对应的WSDL的命名空间,下面是WSDL文件中的变化
@WebMethod()
注解写的位置:
operationName="show"
用来修改接口类中方法的名称,下面是WSDL文件中的变化
exclude=true
隐藏此方法,不进行发布出去,虽然是共有方法也不发布出去,如果没有能发布的方法,在发布服务是(启动)时将报错。
@WebParam(name="a")
注解位置:
用来修改形式参数名称,下面是XSD文件中的变化
@WebResult(name="r")
注解位置:
用来修改返回值名称,下面是XSD文件中的变化
END
分布式.RPC-WebService入门案例(java实现,注解实现,xsd文件解析,wsdl文件解析)相关推荐
- WebService入门案例
关于WebService的作用和好处,大家应该都了解.但如何在Asp.Net中添加Web Service等问题一直是新手朋友的一大难题.鉴于网上没有一个像样的实际案例,特将课程设计中运用到的WebSe ...
- Dva.js+umi入门案例(models层,services层,components层详细代码与解析)
dva.js dva简化了我们使用redux管理数据的那些繁杂的步骤, 它把所有的步骤都整合到一个model文件里, 在这个文件里你可以管理你的state,处理你的同步&异步action, 还 ...
- WebService入门学习一
参考:https://blog.csdn.net/c99463904/article/details/76018436 1.WebService简介? Web Service技术, 能使得运行在不同机 ...
- WebService入门一、Hello WebService
2019独角兽企业重金招聘Python工程师标准>>> 准备工作 下载最新版本的JAX-WS RI(此处为2.2.8): http://repo.maven.apache.org/m ...
- 2021年大数据Flink(八):Flink入门案例
目录 Flink入门案例 前置说明 API 编程模型 准备工程 pom文件 log4j.properties Flink初体验 需求 编码步骤 代码实现 Flink入门案例 前置说明 API API ...
- java axis2 教程_webservice的Axis2入门教程java版
本文转自百度文库 Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物.Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebServi ...
- 【WebService】第五章、WSDL文件详解
本章主要详细记录如何读懂一个WSDL描述文件. 在上一章里面我们已经成功部署了一个WebService服务,并且通过浏览器能够顺利的看到WSDL文件.那么该文件 表示什么含义呢?通过这个文件我们该如何 ...
- dubbo-快速入门-分布式RPC框架Apache Dubbo
文章目录 分布式RPC框架Apache Dubbo 1. 软件架构的演进过程 1.1 单体架构 1.2 垂直架构 1.3 SOA架构 1.4 微服务架构 2. Apache Dubbo概述 2.1 D ...
- mybatis基于注解的入门案例
mybatis基于注解的入门案例: 把IUserDao.xml移除,在dao接口的方法上使用@Select注解,并且指定SQL语句 同时需要在SqlMa ...
最新文章
- R语言使用dplyr包使用group_by函数、summarise函数和mutate函数计算分组下的均值、标准差、样本个数、以及分组均值的95%执行区间对应的下限值和上限值(Calculate CI)
- MicroPython实例之TPYBoardv102自动浇花系统
- Maven提高篇系列之(五)——处理依赖冲突
- 在gridview或datagrid中添加汇总行的三种实现方式
- linux服务器安装caffe(无root权限)
- C#语言-NPOI.dll导入Excel功能的实现
- C++11 随机数生成
- php 获取header auth,php CURL Auth请求头和响应头获取
- Hive精选高频面试题
- win7系统如何卸载漏洞补丁--win10专业版
- 网络词典[U~Z](转)
- VBA学习练习-将多个单元格内容合并
- 关于编译优化选项o3的问题
- PS如何修改gif动图 播放速度 - 本地方法篇
- 解决uniapp手机浏览器视频封面不显示问题
- 信息系统分析与设计-信息、管理与信息系统
- 阴阳师真八歧大蛇最低配置攻略,蛇黑切
- 励销云全流程智能销售解决方案,助力B2B企业高效增长
- 图片按钮+自定义形状
- 手机助手通过usb数据线连接