WebService入门_01

1、XML约束-schema

[html] view plain copy

 print?

  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?

  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中的几个重要术语

WSDL:web service definition language

直译 : WebService定义语言

 

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

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

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

SOAP:simple object  access protocal

直译: 简单对象访问协议

 

1. 是一种简单的、基于HTTP和XML的协议, 用于在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?

  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?

  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?

  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?

  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. }  
时间: 2024-09-17 04:35:54

WebService入门_01的相关文章

Java6开发WebService入门

之前常常用CXF.Axis2.XFire等来开发结合Java语言来开发Web Service应用,这样的好处是用途广,灵活,另外一个重要原因是我们的生产环境是Java5. 但实际上Java6中已经支持用Java开发WebService应用了,而且很方便.这样就大大减少了项目安装部署的代价,因为选择开源的框架依赖大量第三方包,程序的尺寸倍增. 下面是一个Java6开发Web Service的入门例子. package lavasoft; import javax.jws.WebService; i

WebService入门篇

首先新建一个webservice服务器端的程序.注意的是要使用jdk6及其以上版本.   将一个项目如下:          内部代码如下: package cn.itcast.server;   import javax.jws.WebService; import javax.xml.ws.Endpoint;   @WebService public class Hello {       /**        * Endpoint Web服务端点        * 使用在此类定义的静态方法

webservice入门之CXF教程

1.CXF简介     Apache CXF是一个开源的Service框架,可以用于简化用户的service开发,基于CXF开发的应用可提供SOAP.XML/HTTP.RESTFUL HTTP或CORBA等服务.CXF底层页可以使用不同的传输协议,包括HTTP.JMS或JBI等.     根据CXF官方的说明,CXF包含以下特性:     支持大量的Web Service标准,包括SOAP.WS-I Basic Profile.WSDL.WS-Addressing.WS-Policy.WS-Re

Java6开发WebService进阶

在上文中,使用Java6做了一个最简单的WebService服务的实现,并通过Java6API发布了该服务. 一.服务端代码 package lavasoft; import javax.jws.WebService; import javax.xml.ws.Endpoint; /** * Java6开发WebService入门 * * @author leizhimin 2009-11-13 16:10:44 */ @WebService public class Java6WebServic

AngularJS入门教程之服务(Service)_AngularJS

AngularJS 服务(Service) AngularJS 中你可以创建自己的服务,或使用内建服务. 什么是服务? 在 AngularJS 中,服务是一个函数或对象,可在你的 AngularJS 应用中使用. AngularJS 内建了30 多个服务. 有个 $location 服务,它可以返回当前页面的 URL 地址. 实例 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &

JavaWeb文件上传入门教程_java

一.文件上传原理  1.文件上传的前提: a.form表单的method必须是post b.form表单的enctype必须是multipart/form-data(决定了POST请求方式,请求正文的数据类型) c.form中提供input的type是file类型的文件上传域  二.利用第三方组件实现文件上传  1.commons-fileupload组件: jar:commons-fileupload.jar  commons-io.jar  2.核心类或接口DiskFileItemFacto

在J2MEDEV上的文章

Java SE    1.利用Jakarta Commons Lang简化Java        http://www.j2medev.com/Article/Class3/Class7/200509/712.html   2.使用Java开发计算器(二)        http://www.j2medev.com/Article/Class3/Class17/200507/476.html   3.使用Java开发计算器(一)        http://www.j2medev.com/Art

从零开始学习 webservice第一集,java webservice简单实例入门教程

现在从零开始学习webservice 概念自己百度搜,总之,webservice就相当于一个接口,就像你走进了一家售货店,你不需要知道这家店怎么卖给你东西,你拿着钱去,说我要一包玉溪,人家就会给你返回一包玉溪烟,这就是webservice.不用关心掏的钱是人民币还是欠条. 首先,安装或者升级你的jdk到jre-6u20-windows-i586.exe  不要小看了本句话. 下载地址 http://10.10.4.10/download/30096685/37849757/4/zip/148/7

LoadRunner使用入门 进行Webservice负载测试

1.什么是LoadRunner LoadRunner是HP公司的一款付费工具,该工具是一种预测系统行为和性能的负载测试工具.通过模拟上千万用户实施并发负载来确认和查找问题. 2.什么是负载测试 通过测试系统在资源超负荷的情况下的表现,以发现设计上面的错误或验证系统的负载能力. 负载测试的目标是确定并保证系统在超出最大预期工作量的情况下仍能正常运行,还能评估系统的性能特征. 下面介绍一下关于负载测试的几个基本概念: 2.1吞吐率:服务器并发处理能力的量化描述(单位reqs/s),单位时间内处理的请