<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>
(一)Web服务(Web Services)原理
一个 实时的股票报价的Web服务
在讲Web服务之前,先看一个实时的股票报价的Web服务。
http://www.webservicex.net/stockquote.asmx?op=GetQuote
在symbol栏中输入中国工商银行的股票代码“601988.SS”(中国沪市的后缀是SS, 比如中国银行601988.SS,深市后缀是SZ, 比如万科A是000002.SZ)。
得到的结果是XML格式的文档。
xmlversion="1.0"encoding="utf-8"?>
stringxmlns="http://www.webserviceX.NET/">
StockQuotes>
Stock>
Symbol>601988.SSSymbol>
Last>5.90Last>
Date>8/20/2007Date>
Time>9:37pmTime>
Change>+0.14Change>
Open>5.90Open>
High>5.95High>
Low>5.85Low>
Volume>17503092Volume>
MktCap>N/AMktCap>
PreviousClose>5.76PreviousClose>
PercentageChange>+2.43%PercentageChange>
AnnRange>3.23-6.35AnnRange>
Earns>0.00Earns>
P-E>N/AP-E>
Name>"Name>
Stock>
StockQuotes>
string>
可以看到中国工商银行股票在8/20/2007 日9:37pm 时(采用的是GMT -5时区的时间,与北京时间差13个小时)的股票价格是5.90 元,返回的信息中还包括股票当天的最高价,最低价,昨日收盘价等信息。这个股票报价的Web服务是免费的,但是有大约50分钟的延迟。
Web服务(Web Services )原理
Web服务是一种面向服务的架构的技术,通过标准的Web协议提供服务,目的是保证不同平台的应用服务可以互操作。
根据W3C的定义, Web服务(Web service)应当是一个软件系统,用以支持网络间不同机器的互动操作。网络服务通常是一组应用程序接口(API),它们部署在网络系统(如国际互联网)的远程服务器端,客户提交特定的请求来访问这些接口,使程序执行。
在上图Web Services的体系结构图中,有三种角色和三种技术。以前面的股票报价Web服务来解释这些名词:
三种角色
-
服务提供者(Service Provider):股票报价Web服务是由Symbol公司开发的,那么Symbol公司就是Web服务的提供者。
-
服务中介(Service Broker): Web服务需要被人查找到, 才能被用户使用, 因此需要一个地方来注册并发布Web服务.而http://www.webservicex.net/就提供了这么一个地方.这个网站被称为 Service Broker
-
服务请求者(Service Requeter): 任何使用这个Web服务的人员或者组织.
三种技术: WSDL, SOAP 以及UDDI
1。WSDL(Web Services Description Language )
一个XML格式文档,用以描述服务端口访问方式和使用协议的细节。通常用来辅助生成服务器和客户端代码及配置信息。
在浏览器中输入“http://www.webservicex.net/stockquote.asmx?WSDL “,可以看到WSDL文档的详细内容。
股票报价Web 服务的WSDL中定义了名为”StockQuote”的Web服务,以及使用SOAP文档作为参数的方法"GetQuote". 这个WSDL还定义了基于HttpGet和HttpPost的方法,但这不在本文讨论范围之内.
wsdl:bindingname="StockQuoteSoap"type="tns:StockQuoteSoap">
soap:bindingtransport="http://schemas.xmlsoap.org/soap/http"style="document"/>
wsdl:operationname="GetQuote">
soap:operationsoapAction="http://www.webserviceX.NET/GetQuote"style="document"/>
wsdl:input>
soap:bodyuse="literal"/>
wsdl:input>
wsdl:output>
soap:bodyuse="literal"/>
wsdl:output>
wsdl:operation>
wsdl:binding>
......
wsdl:servicename="StockQuote">
wsdl:portname="StockQuoteSoap"binding="tns:StockQuoteSoap">
soap:addresslocation="http://www.webservicex.net/stockquote.asmx"/>
wsdl:port>
wsdl:service>
2。SOAP(Simple Object Access Protocol, )
SOAP是一个基于XML的可扩展消息信封格式,需同时绑定一个传输用协议。这个协议通常是HTTP 或 HTTPS,但也可能是SMTP 或XMPP。
Web服务使用者, 调用Web服务的方法, 使用的是SOAP格式的参数. 在前面的例子中, 发送请求的SOAP内容如下:
SOAP request
POST/stockquote.asmxHTTP/1.1
Host:www.webservicex.net
Content-Type:text/xml;charset=utf-8
Content-Length:unknown
SOAPAction:"http://www.webserviceX.NET/GetQuote"
xmlversion="1.0"encoding="utf-8"?>
soap:Envelopexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
soap:Body>
GetQuotexmlns="http://www.webserviceX.NET/">
symbol>601988.SSsymbol>
GetQuote>
soap:Body>
soap:Envelope>
从web服务返回的相应SOAP内容如下:
SOAP response
HTTP/1.1200OK
Content-Type:text/xml;charset=utf-8
Content-Length:unknown
xmlversion="1.0"encoding="utf-8"?>
soap:Envelopexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
soap:Body>
GetQuoteResponsexmlns="http://www.webserviceX.NET/">
GetQuoteResult>stringxmlns="http://www.webserviceX.NET/">StockQuotes>Stock>Symbol>601988.SSSymbol>Last>5.90Last>Date>8/20/2007Date>Time>9:37pmTime>Change>+0.14Change>Open>5.90Open>High>5.95High>Low>5.85Low>Volume>17503092Volume>MktCap>N/AMktCap>PreviousClose>5.76PreviousClose>PercentageChange>+2.43%PercentageChange>AnnRange>3.23-6.35AnnRange>Earns>0.00Earns>P-E>N/AP-E>Name>"Name>Stock>StockQuotes>string>
GetQuoteResult>
GetQuoteResponse>
soap:Body>
soap:Envelope>
3。UDDI(Universal Description, Discovery, and Integration)
UDDI是一个用来发布和搜索WEB服务的协议,应用程序可藉由此协议在设计或运行时找到目标WEB服务。
UDDI的作用类似于常见的电话本,Web服务要在某个地方注册,登记之后,才能被其它组织或个人查找到并使用Web服务的种种功能。例如提供股票报价的Web服务的网站(http://www.webservicex.net)就提供Web服务存放及查找。
在2000年九月发布了UDDI之后, IBM, Microsoft 和 SAP等公司提供了免费的UDDI注册服务器,用户可以在申请用户名及密码之后,在服务器上提交自己的Web服务。但是在2005年UDDI 3.0正式成为 OASIS的标准之后, IBM, Microsoft 和 SAP宣布自2006年12月之后,不再提供公用的UDDI注册服务。
目前, 有关UDDI注册服务则由相关的产品实现,比如
-
Sun Microsystems 公司的The Java Web Services Developer Pack
-
IBM公司的WebSphere UDDI Registry
-
Microsoft 公司的Microsoft® Windows Server 2003 Enterprise UDDI Services
使用这些Web服务产品,企业可以搭建内部的或者外部的UDDI服务器。Sun Microsystems 公司的The Java Web Services Developer Pack (JWSDP)1.6 中, 即支持UDDI 3.0, 也支持 ebXML (Electronic Business using XML).
实时的股票报价的Web服务已经被用在了很多教程中,也可以针对这个Web服务开发实际的应用,比如建立客户端来调用Web服务StockQuote。这就需要对返回的XML格式的字符串进行解析,可以采用JAXP(Java API for XML processing)包。JAVA SE 5 中已经包含JAXP包, 不需要单独下载。
本文的目的主要是为了阐述JAVA EE 5 平台上实现Web服务的过程,因此在建立一个类似的股票报价的Web服务时,简化了股票报价的逻辑。在Web服务的返回信息中,仅包含静态的股票价格。
以下分几个部分讲述JAVA EE 5平台上实现一个模拟的股票行情Web服务,并且采用不同的客户端来调用这个Web服务。客户端包括:瘦客户端,胖客户端以及移动客户端。
-
JAVA EE 5平台上实现Web服务实例(模拟股票行情机)
-
瘦客户端(thin client)调用Web服务
-
胖客户端(rich client)调用Web服务
-
移动客户端(mobile client)调用Web服务
相关推荐
(一)Java EE 5实现Web服务(Web Services)及多种客户端实例-原理.rar
(二)Java EE 5实现Web服务(Web Services)及多种客户端实例-实现Web服务.rar
(四)Java EE 5实现Web服务(Web Services)及多种客户端实例-胖客户端.rar
(三)Java EE 5实现Web服务(Web Services)及多种客户端实例-瘦客户端.rar
(五)Java EE 5实现Web服务(Web Services)及多种客户端实例-移动客户端.rar
(六)Java Ee平台上实现Web服务及多种客户端实例-小结.rar
除了对JAVA EE Web编程基本技术的讲解淙外,还针对Web应用开发中如打印、图表、日志、上传、下载和国际化等常见功能特性的实现,综合运用多种JAVA EE开发技术,提出多种解决方案,并深入讲座分析,对开发人员动手...
JAVA EE WEB开发实例精解
Java EE WEB 工程师培训------JDBC+Servlet+JSP整合开发
Learn the fundamentals of Java EE 8 APIs to build effective web services Java Enterprise Edition is one of the leading application programming platforms for enterprise Java development. With Java EE 8...
随着 ...网上书店是图书购买的一种简化和模型,该系统主要实现简单的用户管理,购物车管理,订单管理等功能。目的 是对企业开发的技术有初步的了解,能够掌握一定的开发技能,对框架形成系统的认识。
Java EE Web编程(Eclipse平台) 李芝兴 本书的4-18章全部源文件 自己买的书带光盘,把源文件传上来了
Java ee课程设计---智能XX管理系统(基于JAVA EE的Java web项目) 利用了数据库技术(SQL server),Java beans,servlet技术
虽然很贵,但是很全,下载多个版本.Eclipse Java EE IDE for Web Developers,所有工具仅仅用于非商业。eclipse-jee-photon-R-win32-x86_64,eclipse-jee-neon-3-win32-x86_64,eclipse-jee-luna-SR2-win32-x86_64,...
Build a Twitter-like web application called Bullhorn using Java, Oracle, and more Create web applications using Eclipse Design web pages with HTML forms, tables, and more Use SQL along with Java ...
Eclipse Java EE IDE for Web Developers 一共16个分卷,分卷4 Eclipse Java EE IDE for Web Developers 一共16个分卷,分卷4
用Java_EE_5实现的网上书店实例用Java_EE_5实现的网上书店实例用Java_EE_5实现的网上书店实例用Java_EE_5实现的网上书店实例用Java_EE_5实现的网上书店实例用Java_EE_5实现的网上书店实例
Eclipse Java EE IDE for Web Developers 一共16个分卷,分卷7 Eclipse Java EE IDE for Web Developers 一共16个分卷,分卷7
B API轻松进行数据绑定了解如何将JSON-P API用于灵活处理实现同步和异步JAX- RS客户端使用服务器发送的事件来实现服务器端代码带JSON Web令牌的安全Java EE 8 Web服务如果您觉得这本书适合您,请立即获取!...