WebService入门_01

1、XML约束-schema

<?xml version="1.0" encoding="UTF-8" ?>
<schema	xmlns="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://www.wiseweb.com"
	elementFormDefault="qualified" >
    <element name="书架">
        <complexType>
        	<!-- 最大出现次数无限制 -->
            <sequence maxOccurs="unbounded">
                <element name="书">
                    <complexType>
                        <sequence>
                            <element name="书名" type="string" />
                            <element name="作者" type="string" />
                            <element name="售价" type="string" />
                        </sequence>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>
<?xml version="1.0" encoding="UTF-8"?>

<书架 xmlns="http://www.wiseweb.com"
				xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
				xsi:schemaLocation="http://www.wiseweb.com book.xsd">
	<书>
		<书名>JavaScript开发</书名>
		<作者>老佟</作者>
		<售价>28.00元</售价>
	</书>
</书架>

<!--
	schema规范中:
	1.所有标签和属性都需要由schema文件来定义
	2.所有的schema文件都需要有一个id,但是它在这里叫namespace
	3.namespace值由什么来制定?
		由targetNameSpace属性来制定,它的值是一个url(很有可能不存在)
	4.如何引入一个schema约束?
		属性?:用xmlns属性
		属性值:对应的schema文件的id(namespace值)
	5.如果引入的schema不是w3c组织定义,必须指定schema的位置
	6.schema的位置由什么属性来指定?
		属性:schemaLocation
		属性值:namespace path
	7.如果引入了n个约束,需要给n-1个取别名
 -->

注:

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端:

定义一个接口:

package com.wiseweb.ws;

import javax.jws.WebMethod;
import javax.jws.WebService;

/**
 * SEI
 * @author piqiu
 *
 */
@WebService
public interface HelloWS {

	@WebMethod
	public String sayHello(String name) ;
}

定义这个接口的实现类:

package com.wiseweb.ws;

import javax.jws.WebService;

/**
 * SEI的实现
 * @author piqiu
 *
 */
@WebService
public class HelloWSImpl implements HelloWS {

	@Override
	public String sayHello(String name) {
		System.out.println("server sayHello():" + name);
		return "Hello: " + name;
	}

}

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

package com.wiseweb.ws.server;

import javax.xml.ws.Endpoint;

import com.wiseweb.ws.HelloWSImpl;

/**
 * 发布webservice
 * @author piqiu
 *
 */
public class ServerTest {

	public static void main(String[] args) {
		String address = "http://10.211.55.3:8989/day01_ws/hellows" ;
		Endpoint.publish(address, new HelloWSImpl()) ;
		System.out.println("发布webservice成功!");
	}
}

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

package com.wiseweb.ws.test;

import com.wiseweb.ws.HelloWSImpl;
import com.wiseweb.ws.HelloWSImplService;

/**
 * 调用webservice
 * @author piqiu
 *
 */
public class ClientTest {

	public static void main(String[] args) {
		HelloWSImplService factory = new HelloWSImplService() ;
		HelloWSImpl helloWS = factory.getHelloWSImplPort() ;
		System.out.println(helloWS);
		String result = helloWS.sayHello("benjamin") ;
		System.out.println("client " + result);
	}
}

时间: 2024-10-01 20:24:26

WebService入门_01的相关文章

RESTful WebService入门

RESTful WebService入门 RESTful WebService是比基于SOAP消息的WebService简单的多的一种轻量级Web服务,RESTful WebService是没有状态的,发布和调用都非常的轻松容易. 下面写一个最简单的Hello World例子,以便对RESTful WebService有个感性认识.因为非常专业理论化的描述RESTful WebService是一件理解起来很痛苦的事情.看看例子就知道个大概了,再看理论就容易理解多了. /** * RESTful

RESTful WebService入门(转)

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lavasoft.blog.51cto.com/62575/229206 RESTful WebService是比基于SOAP消息的WebService简单的一种轻量级Web服务,RESTful WebService是没有状态的,发布和调用都是非常的轻松容易. 以下是一个最简单的Hello World例子,以便对RESTful WebService有个感性认识.因为非常专业理论化

RESTful WebService入门【转】

ESTful WebService是比基于SOAP消息的WebService简单的多的一种轻量级Web服务,RESTful WebService是没有状态的,发布和调用都非常的轻松容易. 下面写一个最简单的Hello World例子,以便对RESTful WebService有个感性认识.因为非常专业理论化的描述RESTful WebService是一件理解起来很痛苦的事情.看看例子就知道个大概了,再看理论就容易理解多了. /** * RESTful WebService入门 * @author

WebService入门Demo

以前写博客最主要的就是不知道写什么东西,现在感觉能写点东西,就是感觉博客随笔的标题挺难取的,最近工作中刚好用到了WebService,刚好可以写一篇博客.去年工作的时候自己也用到过,只是知道调用一些WebService中的方法,想想还是写篇博客的,也就是俗话说的不要只顾低头走路,还要注意抬头看天.还是写正文吧,现在每次写博客都会会扯点有的没的,不要见怪. WebService的基本概念 WebService看名字的简单点理解就是基于Web的服务,跟普通的web程序一样遵循Http协议,接收响应外

WebService入门实例教程

什么是WebService 通过使用WebService,您的应用程序可以向全世界发布信息,或提供某项功能,它是基于Web的服务,通过Web进行发布.查找和使用. WebService脚本平台需支持XML+HTTP. HTTP协议是最常用的因特网协议. XML提供了一种可用于不同的平台和编程语言之间的语言. 为什么要使用WebService 最重要的事情是协同工作. 1.跨平台调用(WebService不局限于操作系统,你可以在Windows上调用linux上的WebService服务,反之亦然

WebService入门案例

关于WebService的作用和好处,大家应该都了解.但如何在Asp.Net中添加Web Service等问题一直是新手朋友的一大难题.鉴于网上没有一个像样的实际案例,特将课程设计中运用到的WebService(在Asp.Net中添加实时天气预报的案例)粘贴出来,并附上个人的理解.以便于新手朋友快速入门WebService,帮助新手朋友快速的掌握和理解如何在ASP.NET中建立这种引用,实现网页上面的高大效果.对于本文,欢迎转载,但请标明文章出处:itred.cnblogs.com.欢迎各位大神

一、WebService入门——helloService

既然是入门,那helloworld当之无愧啊,,,, 1.创建两个Java工程,一个做为webservice的服务端,一个做为webservice的客户端. 2.首先在WSService工程中,编写service端,其中注意细节已经在代码中体现 Java代码   package com.wang.webservice.service; import javax.jws.WebService; import javax.xml.ws.Endpoint; /* * @WebService注解 *  

Spring WebService入门

Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的互操作的应用程序.Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据Web Service规范实施的应用之间, 无论它们所使用的语言. 平台或内部协议是什么, 都可以相互交换数据.Web Service是自描述.

1.webService入门

学习webService前,先来思考一个问题: 请看以下截图: 以上是一个综合网站的部分显示信息,我们能很明显的看出打开该网页所处区域的一些信息,比如:地点是厦门,天气是阵雨,温度是9摄氏度等等... 那么,这些数据都是保存在公司服务器的吗? 显然不是,一个中国那么大,有多少地区,一个公司要存放每一天的相关地区的天气等数据,那得消耗多少资源,所以该信息一般是从气象局获取. 这些数据获取过来是网页形式的吗? 很多门户网站都有相关天气信息的显示,并且很容易看出它们的样式都是不一样的,所以很明显获取的