WebService的初级学习
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebService的初级学习相关的知识,希望对你有一定的参考价值。
-
复习准备
1. Schema约束:
1.1 namespace相当于Schema文件的id;
1.2 targetNamespace属性用来指定schema文件的namespace的值;
1.3 xmlns属性引入一个约束, 它的值是一个schema文件的namespace值;
1.4 schemaLocation属性用来指定引入的schema文件的位置;
schema规范中:
1. 所有标签和属性都需要有schema文件来定义;
2. 所有的schema文件都需要有一个id, 但在这里它叫namespace;
3. namespace的值由什么来指定? 由targetNamespace属性来指定, 它的值是一个url(很有可能不存在)
4. 如何引入一个Schema约束? (例如:xmlns:mvc="http://www.springframework.org/schema/mvc)
属性? : 用xmlns属性
属性值: 对应的schema文件的id(namespace值)
5. 如果引入的schema不是w3c组织定义, 必须指定schema文件的位置
6. schema文件的位置由什么属性来指定?
属性? : schemaLocation
属性值: namespace path
7. 如果引入了N个约束, 需要给n-1个取别名
2. HTTP协议相关知识
2.1 请求的组成:
请求行(请求方式 path http1.1)
请求头
请求体: 只有post请求有
2.2 响应的组成
响应状态行:
响应头
响应体 : 浏览器解析显示的数据
2.3 请求的过程
浏览器客户端 _http1.1建立连接_> 服务器 -----> 页面文档(文字图片等)
-
关于WebService的几个问题及常用术语
1. Webservice是什么?
基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据)
一个跨语言、跨平台的规范(抽象)
多个跨平台、跨语言的应用间通信整合的方案(实际)
2. 为什么用使用webService
web service能解决:
跨平台调用
跨语言调用
远程调用
3. webservice相当于HTTP+?+?
Http+xml+schema
4. wsdl是什么?(webService definition language)
webservice定义语言, 对应.wsdl文档, 一个webservice会对应一个唯一的wsdl文档, 定义了客户端与服务端发送请求和响应的数据格式和过程
5. 如何发布一个webservice? (SEI: service endPoint interface 服务终端接口)
定义SEI @webservice @webMethod
定义SEI的实现
发布: Endpoint.publish(url, SEIImplObject)
6.如何请求一个webservice?
根据wsdl文档生成客户端代码 jdk/cxf
根据生成的代码调用webService
-
WebService发布请求实例
1. service代码(使用JDK开发):
/*定义SEI
*/
package com.webservice.service; import javax.jws.WebMethod; import javax.jws.WebService; import javax.xml.ws.WebEndpoint; @WebService//使用webservice接口 public interface HelloWS { @WebMethod//接口中暴露的方法 public String sayHello(String name); }
/*SEI的实现 */
package com.webservice.service; import javax.jws.WebService; @WebService public class HelloWSImp implements HelloWS { @Override public String sayHello(String name) { System.out.println("server: "+"hello "+ name); return "Client : "+"hello " +name; } }
/*终端的发布
*/
package com.webservice.test; import javax.xml.ws.Endpoint; import com.webservice.service.HelloWSImp; public class ServerTest { public static void main(String[] args) {
//终端发布的url,可以自定义但不要和已知的重复 String address = "http://localhost:5766/webservice-test_service/HelloWS";
//发布终端 Endpoint.publish(address, new HelloWSImp()); System.out.println("webservice发布成功!"); } }
2.Client代码:
在cmd命令行进入client文件包的src文件下,使用jdk自带的wsimport.exe工具生成client代码,输入
wsimport -keep url?wsdl (...?wsdl 可查看其wsdl文件) 完成后会制动生成相应的client代码
(若使用cxf框架开发,加入cxf的jar包即可,service不需要其他改动; Client边在自动生成代码时使用的是cxf的工具
wsdl2java url?wsdl )
自动生成Client代码后直接开始测试
package com.webservice.test; import com.webservice.service.HelloWSImp; import com.webservice.service.HelloWSImpService; public class ClientTest { public static void main(String[] args) {
//起点,在其wsdl文件的<wsdl:service>中可以看出这个类似 工厂 的类 HelloWSImpService factory = new HelloWSImpService();
//client对应的SEI实现类 HelloWSImp helloWSImpPort = factory.getHelloWSImpPort(); String sayHello = helloWSImpPort.sayHello("xffgem"); System.out.println(sayHello); } }
以上是关于WebService的初级学习的主要内容,如果未能解决你的问题,请参考以下文章
学习 WebService 第二步:知识准备——SOAP vs REST(wsdl和wadl区别)(转)
XML与WebService期末复习——webservice