java-WEB模块webservice文档一
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WebService_Day01
内容概述:
1.WebService使用场景?
2.客户端调用远程的WebService服务。
3.Webservice的三要素
4.jax-ws的服务端和客户端的开发基于jdk的实现。
5.wsdl说明书介绍
6.注解的使用
1.WebService应用场景
Webservcie是一种远程调用技术。
查看PPT
1.1.业务场景:
1.2.解决不同网站之间数据共享问题?早期:webService
1.2.1.开放数据库权限
不同的网站数据库开发相关权限.
1.2.2.U盘拷贝
简单适用方便
1.2.3.网站采集不同数据
需要专业人员分类整理需要大量的工作劳动力
2.本系统和其他网站系统交互
方式一: socke 通信
方式二: 接口协议概念如ppt
接口协议进行数据传递,
优点:网站本身不需要知道其他方系统到底是如何获取数据的. 对方系统底层使用的数据库我们不需要关心!
举例: 手机归属地的查询.
2.1.我们需要什么样的接口
答案:
3.第一个webservice案例演示需求:通过外网提供webservice服务查询手机号归属地:
/ webservice服务网站
/Service
网络查询介绍
输入手机号直接获取手机归属地....演示...
获取网站的ws服务
wsdl 地址: 作用: 定义客户端生成代理类规范!
3.1.编写客户端获取服务调用接口实现
1:准备工作磁盘G盘下创建aa 目录
2: cmd 窗口执行wsimport 命令解析手机归属地wsdl 文件
wsimport -p cn.itcast.mobilecode.stub -s source -d bin /WebServices/MobileCodeWS.asmx?wsdl
回车ok
创建一个java工程:
第一步:生成本地代理类
使用jdk 自带的命令: wsimport的命令来解析wsdl文件生成代理类:
wsimport -s
如果报错:jdk 1.7
报错原因:.net生成的wsdl文件,用我们的jdk来解析的时候,有的元素不识别
解决方法:将xml保存下来,删除不识别的元素,然后使用离线的方式进行解析;
重新生成执行命令.....
显示:
说明解析成功!生成本地磁盘的的代码:
客户端代码开发获取远程端手机归属地信息! MobileCodeWS服务类--->接口实例--->调用接口业务方法完成数据获取!
只需要.java文件将其拷贝到刚刚新建号的java工程中:
如果拷贝到工程中后,报错,
错误提示:找不到相关方法,或者方法的参数不对。
因为jdk1.6对wsimport生成的代码有些不匹配如下所示:
解决方案:
1.更换jdk为1.7版本
2.将参数删掉一个也可以
第二步:编写本地调用代码
//客户端代码,来调用远程的ws服务
运行输出:
相关名称解释
4.什么是webservice 4.1.W ebService概念
学生作业:
estore/struts2/store
添加一个功能
4.2.W ebService由来
结论:
webservice是标准化的产品,因此,各种流行的开发语言和平台都支持webservice。
4.3.W S底层传输简介
了解即可
4.4.W ebService三要素
4.4.1.SOAP (简易对象访问协议)
数据传输的协议(http+xml)基于http协议传输...传输的内容是xml
4.4.2.WSDL (Web services 描述语言说明书)
定义webservice数据是如何传输的,数据的内容以及相关协议描述和定义客户端通过wsdl文件获取本地代理类(桩)
wsimport jdk提供! -s -d -p
4.4.3.UDDI (webservice注册地)
注册webService服务
整合和发现WebService服务—类似目录服务器
PPT所示
4.5.W SDL离线使用说明
案例获取上海天气
网站获取wsdl地址
新建目录
1: cmd 窗口使用wsimport
2:回车报错....语言之间存在差异... 采用离线解析方式可以修改wsdl文件
算出不必要元素不要删除名称空间含有的<s:schema>
3: 加载本地离线文件
生成源码以及编译之后字节码文件
客户端编码编写
测试Ok
5.jax-ws快速入门
目标:通过jax-ws编写我们自己的服务端和客户端。
编写自己的WebService 服务器端开发提供数据服务和以及对应的客户端开发5.1.j ax-ws介绍
soap是一个标准协议,webservice是使用该协议的标准!
版本问题:不同jdk拥有不同的api实现。
5.2.服务端编写
仅仅需要三步骤即可
创建一个工程即可
案例:演示手机号码归属地查询(提供手机号码归属地) 步骤一.编写服务端点接口以及实现类
实现类:
步骤二.在接口实现类上上添加注解@WebService
步骤三.EndPoint发布服务器端的服务参照ppt 代码即可
API简介来自jdk 提供的类Endpoint
提供的静态方法发布ws服务
该方法介绍
使用main方法启动发布服务器:地址可以自定义http://127.0.0.1:9898/mobile
注意:ip地址必须是本机的ip地址!端口绝对不能已经被占用。
查询端口是否已经被某某占用:可以使用命令netstat -ano
测试:浏览器直接输入该地址: http://127.0.0.1:9898/mobile?wsdl即可
通过访问webservice的说明书地址来测试是否发布成功。
ok !
测试ok ...至此服务器端开发完成!
5.3.客户端编写一
新建另一个工程:
步骤:两步:
步骤一.
使用wsimport命令生成本地代理类(简称:stub)wsimport命令简单使用介绍查看文档
下发资料:
控制台输入命令.....
将生成好的代码,复制到客户端的工程中。
步骤二.通过生成的代理类调用远程端的服务器的接口代码
先获取服务类直接new 即可在使用服务类调用接口的端口得到服务器的接口的实例即可...
测试ok !
上述客户端调用存在不足:
如果服务器端ip地址等信息如果发生变化,则,需要更改生成的代码(本地代理类重新生成) 5.4.客户端编写二
使用Service直接创建服务视图
看到protected就别new。
Service 方法: create 方法需要URL地址(wsdl地址) 以及QName 对象(名称空间和服务视图名称)
查看wsdl文件找到名称空间和对应的名称名称空间最后/ 千万不能省掉的!
客户端代码如下:
好处: 服务器IP地址发生变换...那么客户端可以及时更新代码! 不需要重新生成本地代理类!
6.wsdl文档说明书介绍
什么是wsdl
127.0.0.1:9898/mobile?wsdl是说明书的地址,wsdl地址;
127.0.0.1:9898/mobile是webservice的地址。
6.1.w sdl的基本结构
wsdl文档是服务端生成。
---遵循规范要求不同的语言生成的都是xml格式!
7.注解使用说明
问题:
1.wsdl说明书标签由服务端的源代码生成的这样导致服务器端的源码信息泄露。
2.如果服务端代码发生了改变,客户端的代码也需要相应的变化。
(开发不够灵活) 3.采用注解将wsdl文档生成结构以及信息固定!!!---->即使服务器接口代码发送变化但是生成wsdl 文件信息仍然不会发生变化那么客户端生成桩(代理类就不需要改变)
7.1.注解的作用
注解: 对于wsdl 文档生成自定义!
7.2.注解分类使用
7.2.1.加在类上面的注解
范例演示:
wsdl文件:
7.2.2.其他注解
注解的范例演示:
//手机号归属地查询
//接口实现类:实现部分
客户端测试:
步骤一代理类:
soap协议版本1.2,wsimport命令不兼容警告并且生成代理类过程失败
解决方案:在参数wsdl最后加上一个参数:
步骤二:客户端代码:
public class JaxWsAnnClient {
public static void main(String[] args) throws Exception { Service service=Service.create(new
URL("http://127.0.0.1:8888/mobile?wsdl"),
new QName("/", "MobileAddressService"));
// 该代码信息全部都是注解里面信息而不是服务器源代码里面的相关信息
MobileAddress ma = service.getPort(MobileAddress.class);
// wsdl文件将会按照注解生成对应的相关信息!
String addr= ma.getMobileAddress("12222232328");
System.out.println(addr);
}
}
小结:注解可以规范wsdl文档,可以将服务端具体实现隐藏起来,服务端接口代码发生变化,不会影响wsdl的内容,客户端代码不需要修改。
7.2.3.Webservice的方法的须知:
接口实现类的方法,
1:必须是公开public的,2:非静态的。
满足上述两点自动发布到webservice wsdl文件中。
Webservice可以有多个操作方法8.webservice开发须知
8.1.服务端开发注意
作用:发布一个wb服务,提供相关数据(作用: 远程端数据库作用)
代码一般写在业务层service层(业务层代码中逻辑需要事务控制)+dao
服务端一般没有表现层(web层)
8.2.客户端开发注意
作用:调用服务端,获取服务端的数据---服务端此时扮演的是数据库角色。
代码设计:dao数据持久层客户端一般会将webservice当成一个远程端的数据库使用。
9.当天小节:
1:webservice作用
2:webservice的三要素:wsdl,soap,uddi
3:wsdl是什么?--说明书。
4:jax-ws服务端和客户端的编写。
5:注解的使用
家庭作业:
ssh 框架xml整合完struts2人员管理! 单表!(多条件查询HQL QBC SQL 拓展: 分页查询)
ajax 手机号码归属地!。