WebService入门_01

简介:

1、XML约束-schema


[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8" ?>   
  2. <schema  xmlns="http://www.w3.org/2001/XMLSchema"   
  3.     targetNamespace="http://www.wiseweb.com"  
  4.     elementFormDefault="qualified" >  
  5.     <element name="书架">  
  6.         <complexType>  
  7.             <!-- 最大出现次数无限制 -->  
  8.             <sequence maxOccurs="unbounded">  
  9.                 <element name="书">  
  10.                     <complexType>  
  11.                         <sequence>  
  12.                             <element name="书名" type="string" />  
  13.                             <element name="作者" type="string" />  
  14.                             <element name="售价" type="string" />  
  15.                         </sequence>  
  16.                     </complexType>  
  17.                 </element>  
  18.             </sequence>  
  19.         </complexType>  
  20.     </element>  
  21. </schema>  

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <书架 xmlns="http://www.wiseweb.com"  
  4.                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.                 xsi:schemaLocation="http://www.wiseweb.com book.xsd">  
  6.     <>  
  7.         <书名>JavaScript开发</书名>  
  8.         <作者>老佟</作者>  
  9.         <售价>28.00元</售价>  
  10.     </>  
  11. </书架>  
  12.   
  13. <!--   
  14.     schema规范中:  
  15.     1.所有标签和属性都需要由schema文件来定义  
  16.     2.所有的schema文件都需要有一个id,但是它在这里叫namespace  
  17.     3.namespace值由什么来制定?  
  18.         由targetNameSpace属性来制定,它的值是一个url(很有可能不存在)  
  19.     4.如何引入一个schema约束?  
  20.         属性?:用xmlns属性  
  21.         属性值:对应的schema文件的id(namespace值)  
  22.     5.如果引入的schema不是w3c组织定义,必须指定schema的位置  
  23.     6.schema的位置由什么属性来指定?  
  24.         属性:schemaLocation  
  25.         属性值:namespace path  
  26.     7.如果引入了n个约束,需要给n-1个取别名  
  27.  -->  

注:

a. namespace

相当于schema文件的id

b. targetNamespace属性

用来指定schema文件的namespace的值 

c. xmlns属性

引入一个约束它的值是一个schema文件的namespace值 

d. schemaLocation属性

用来指定引入的schema文件的位置


2、很多网站上面有的天气预报和股票行情的功能是他们自己做的数据统计吗?很明显不是,他们都使用webservice。


wsdl是什么?

webservice定义语言对应.wsdl文档一个webservice会对应一个唯一的wsdl文档定义了客户端与服务端发送请求和响应的数据格式和过程


如何发布一个webservice?

定义SEI   @webservice @webMethod

定义SEI的实现

发布:  Endpoint.publish(url, SEIImplObject)

 如何请求一个webservice?

根据wsdl文档生成客户端代码  jdk/cxf

根据生成的代码调用webService


WebService是什么?

1. 基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据)

2. 一个跨语言、跨平台的规范(抽象)

3. 多个跨平台、跨语言的应用间通信整合的方案(实际)

 

以各个网站显示天气预报功能为例:

气象中心的管理系统将收集的天气信息并将数据暴露出来(通过WebService Server), 而各大站点的应用就去调用它们得到天气信息并以不同的样式去展示(WebService Client).

网站提供了天气预报的服务,但其实它们什么也没有做,只是简单了调用了一下气象中心服务器上的一段代码而已。


为什么用WebService?

web service能解决:跨平台调用、跨语言调用、远程调用


什么时候使用WebService?

1. 同一家公司的新旧应用之间

2. 不同公司的应用之间

分析业务需求:天猫网与中通物流系统如何交互?

3. 一些提供数据的内容聚合应用:天气预报、股票行情


WebService中的几个重要术语

WSDLweb service definition language

直译 : WebService定义语言

 

1. 对应一种类型的文件.wsdl

2. 定义了web service的服务器端与客户端应用交互传递请求和响应数据的格式和方式

3. 一个web service对应一个唯一的wsdl文档


SOAP:simple object  access protocal

直译简单对象访问协议

 

1. 是一种简单的、基于HTTPXML的协议用于WEB上交换结构化的数据

2. soap消息:请求消息响应消息

http+xml片断


SEI:WebService EndPoint Interface(终端)

直译web service的终端接口,

 

1. 就是WebService服务器端用来处理请求的接口

@Webservice

@WebMethod


CXF:Celtix + XFire

一个apache的用于开发webservice服务器端和客户端的框架



开发WebService:

Server端:

定义一个接口:

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.wiseweb.ws;  
  2.   
  3. import javax.jws.WebMethod;  
  4. import javax.jws.WebService;  
  5.   
  6. /**  
  7.  * SEI  
  8.  * @author piqiu  
  9.  *  
  10.  */  
  11. @WebService  
  12. public interface HelloWS {  
  13.   
  14.     @WebMethod  
  15.     public String sayHello(String name) ;  
  16. }  

定义这个接口的实现类:

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.wiseweb.ws;  
  2.   
  3. import javax.jws.WebService;  
  4.   
  5. /**  
  6.  * SEI的实现  
  7.  * @author piqiu  
  8.  *  
  9.  */  
  10. @WebService  
  11. public class HelloWSImpl implements HelloWS {  
  12.   
  13.     @Override  
  14.     public String sayHello(String name) {  
  15.         System.out.println("server sayHello():" + name);  
  16.         return "Hello: " + name;  
  17.     }  
  18.   
  19. }  

服务器启动:地址的ip为服务器发布机器的ip,端口写一个没占用的即可。

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.wiseweb.ws.server;  
  2.   
  3. import javax.xml.ws.Endpoint;  
  4.   
  5. import com.wiseweb.ws.HelloWSImpl;  
  6.   
  7. /**  
  8.  * 发布webservice  
  9.  * @author piqiu  
  10.  *  
  11.  */  
  12. public class ServerTest {  
  13.   
  14.     public static void main(String[] args) {  
  15.         String address = "http://10.211.55.3:8989/day01_ws/hellows" ;  
  16.         Endpoint.publish(address, new HelloWSImpl()) ;  
  17.         System.out.println("发布webservice成功!");  
  18.     }  
  19. }  


Client端:

1、生成wsdl客户端代码(使用jdk自带的wsimport.exe工具):

可以直接通过url把代码生成下来,也可以使用浏览器打开wsdl的路径,复制到本地文件,再用根据本地wsdl文件生成客户端代码:

打开cmd:

进入此项目的工作区间的src目录,输入命令wsimport -keep url(注:url为服务器发布地址后面加?wsdl,如此例子中就要输入url为http://10.211.55.3:8989/day01_ws/hellows?wsdl)

刷新工程项目,发现已经生成客户端代码。


2、根据客户端代码调用WebService

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.wiseweb.ws.test;  
  2.   
  3. import com.wiseweb.ws.HelloWSImpl;  
  4. import com.wiseweb.ws.HelloWSImplService;  
  5.   
  6. /**  
  7.  * 调用webservice  
  8.  * @author piqiu  
  9.  *  
  10.  */  
  11. public class ClientTest {  
  12.   
  13.     public static void main(String[] args) {  
  14.         HelloWSImplService factory = new HelloWSImplService() ;  
  15.         HelloWSImpl helloWS = factory.getHelloWSImplPort() ;  
  16.         System.out.println(helloWS);  
  17.         String result = helloWS.sayHello("benjamin") ;  
  18.         System.out.println("client " + result);  
  19.     }  
  20. }  
目录
相关文章
|
4天前
|
XML Java API
WebService简介
WebService简介
23 2
|
4月前
|
XML 网络协议 网络架构
WebService - 基础详解
WebService - 基础详解
108 0
|
Java Maven Spring
SSM(四)WebService 入门详解
webservice这个不知道大家首次接触的时候是怎么理解的,反正我记得我当时第一次接触这个东西的时候以为又是一个XX框架,觉得还挺高大上。然而这一切在之后我使用过后才发现这些全都是YY。 那么webservice到底是什么呢,根据我自己的理解:简单来说就像是一个公开的接口,其他系统不管你是用什么语言来编写的都可以调用这个接口,并可以返回相应的数据给你。就像是现在很多的天气应用,他们肯定不会自己去搞一个气象局之类的部门去监测天气,大多都是直接调用一个天气接口,然后返回天气数据,相关应用就可以将这些信息展示给用户了。
|
XML Dubbo Java
WebService |学习笔记
快速学习 WebService
140 0
WebService |学习笔记
|
Web App开发 XML Java
webservice的一些知识点
SOA:(Service-Oriented Architecture)(面向服务的架构)它是有利于在不同应用程序间实现松散耦合集成的软件架构。 SOA架构的实体:服务提供商(Service Provider) 服务注册表(Service Register) 服务使用者(Service Consumer) SOA概念通过Web服务实现。
1691 0
|
XML 数据格式 网络架构
|
测试技术 网络架构

相关实验场景

更多