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. }  
目录
相关文章
|
Java Maven Spring
SSM(四)WebService 入门详解
webservice这个不知道大家首次接触的时候是怎么理解的,反正我记得我当时第一次接触这个东西的时候以为又是一个XX框架,觉得还挺高大上。然而这一切在之后我使用过后才发现这些全都是YY。 那么webservice到底是什么呢,根据我自己的理解:简单来说就像是一个公开的接口,其他系统不管你是用什么语言来编写的都可以调用这个接口,并可以返回相应的数据给你。就像是现在很多的天气应用,他们肯定不会自己去搞一个气象局之类的部门去监测天气,大多都是直接调用一个天气接口,然后返回天气数据,相关应用就可以将这些信息展示给用户了。
|
C#
C#面向服务WebService从入门到精通
《C#面向服务WebService从入门到精通》包含以下两个部分: 一、《C#远程调用技术WebService修炼手册【基础篇】》本次分享课您将学习到以下干货知识点:1)、WebService技术调用原理图。
1901 0
|
XML 数据格式 网络架构
|
XML Java API
WebService案例入门(基础篇)
[版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/52106690 作者:朱培 ID:sdksdk0 邮箱: zhupei@tianfang1314.cn 一、简介 Webservice:跨语言跨平台的远程调用技术。Web service 即
1665 0
|
XML Java 数据格式
WebService入门篇
首先新建一个webservice服务器端的程序。注意的是要使用jdk6及其以上版本。   将一个项目如下:          内部代码如下: package cn.itcast.server;   import javax.jws.WebService; import javax.xml.ws.Endpoint;   @WebService public class
1711 0
|
6月前
|
缓存 应用服务中间件 数据库
Python Web Service开发及优化
随着互联网的快速发展,Web服务已成为现代技术的核心。Python作为一种功能强大且易于学习的编程语言,在Web服务开发领域占据着重要地位。Python Web服务开发的重要性在于它能够提供高效、可扩展且易于维护的解决方案。本篇博客将探讨如何使用Python的Flask框架、Gunicorn WSGI服务器和Nginx网页服务器来实现高性能的Web服务。