`
piperzero
  • 浏览: 3593556 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

(一)Java EE 5实现Web服务(Web Services)及多种客户端实例-原理

阅读更多
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog.html" frameborder="0" width="728" scrolling="no" height="90"></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服务来解释这些名词:


三种角色



  1. 服务提供者(Service Provider):股票报价Web服务是由Symbol公司开发的,那么Symbol公司就是Web服务的提供者。

  2. 服务中介(Service Broker): Web服务需要被人查找到, 才能被用户使用, 因此需要一个地方来注册并发布Web服务.http://www.webservicex.net/就提供了这么一个地方.这个网站被称为 Service Broker

  3. 服务请求者(Service Requeter): 任何使用这个Web服务的人员或者组织.



三种技术: WSDL, SOAP 以及UDDI

1WSDL(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服务。但是在2005UDDI 3.0正式成为 OASIS的标准之后, IBM, Microsoft SAP宣布自200612月之后,不再提供公用的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服务。客户端包括:瘦客户端,胖客户端以及移动客户端。


  1. JAVA EE 5平台上实现Web服务实例(模拟股票行情机)

  2. 瘦客户端(thin client)调用Web服务

  3. 胖客户端(rich client)调用Web服务

  4. 移动客户端(mobile client)调用Web服务




分享到:
评论

相关推荐

    (一)Java EE 5实现Web服务(Web Services)及多种客户端实例-原理.rar

    本资料主要探讨了在Java EE 5环境中如何实现Web服务以及如何创建不同的客户端实例来调用这些服务。 首先,理解Web服务的基础概念至关重要。Web服务基于SOAP(简单对象访问协议)和WSDL(Web服务描述语言),它们...

    (五)Java EE 5实现Web服务(Web Services)及多种客户端实例-移动客户端.rar

    Java EE 5是Java平台企业版的一个重要版本,它提供了丰富的功能来开发...文档中的"(五)Java EE 5实现Web服务(Web Services)及多种客户端实例-移动客户端.pdf"应详细讲解了这些过程和技巧,建议仔细阅读以加深理解。

    (二)Java EE 5实现Web服务(Web Services)及多种客户端实例-实现Web服务.rar

    在这个教程中,我们将深入探讨Java EE 5如何实现Web服务,并通过多种客户端实例来展示其实用性。 首先,我们要理解Java EE 5中的Web服务基础。这通常涉及到JAX-WS(Java API for XML Web Services)规范,它是Java...

    (三)Java EE 5实现Web服务(Web Services)及多种客户端实例-瘦客户端.rar

    总之,Java EE 5提供的Web服务支持和瘦客户端实例展示了如何在企业级环境中构建可扩展、跨平台的解决方案。通过理解这些概念和技术,开发者能够更好地设计和实现分布式系统,提高系统的互操作性和可维护性。

    (四)Java EE 5实现Web服务(Web Services)及多种客户端实例-胖客户端.rar

    本教程将深入探讨如何在Java EE 5环境中实现Web服务以及创建胖客户端来消费这些服务。 1. **Web服务基础**: - **SOAP (Simple Object Access Protocol)**:Web服务的核心协议,用于交换结构化信息,以XML格式封装...

    (六)Java Ee平台上实现Web服务及多种客户端实例-小结.rar

    本资源的标题"Java EE平台上实现Web服务及多种客户端实例-小结"表明它聚焦于总结如何在Java EE环境中创建和消费Web服务,并提供了不同客户端的应用示例。 Web服务是一种通过HTTP协议传输数据的方式,它允许不同...

    java webservices例子,java webservices,webservices

    Java Web服务(Java Web Services,JWS)是一种基于开放标准的网络通信协议,它允许不同系统之间的应用程序通过互联网交换数据。在本示例中,我们将深入探讨如何在Java环境中创建和使用Web服务,特别是利用MyEclipse...

    基于Web Services和Java EE的SOA实现.pdf

    Web Services是一种基于XML的技术,它提供了一种标准的方式来实现服务的描述、发现和调用。Web Services架构包含了SOAP、WSDL、UDDI等支持服务请求者与服务提供者之间的交互,以及用于Web服务发现的规范。XML是Web ...

    java6实现webservices 超级简单有操作说明易入门

    Java 6实现Web服务(Webservices)是一个重要的IT技术话题,它涉及到企业级应用程序之间的数据交换和通信。Web服务通常使用XML(eXtensible Markup Language)进行数据表示,并通过SOAP(Simple Object Access ...

    JAX-WS_Java API for XML Web Services

    JAX-WS(Java API for XML Web Services)是Java平台上的一个标准API,用于构建和消费基于Web服务的应用程序。这个框架使得开发人员能够轻松地创建、部署和使用XML Web服务。JAX-WS是Java EE的一部分,但也可以在...

    应用Java API开发Web Services.rar Web Swrvices 的详细解说,内容丰富全面

    - JAX-RS是Java EE的一部分,用于构建RESTful Web服务。它提供了注解驱动的方式来定义资源类和方法,简化了HTTP操作的处理。 6. **Web服务安全** - 安全性是Web服务中的重要考虑因素。Java提供SSL/TLS支持以及WS-...

    Java EE 5 Power and productivity with less complexity.doc

    例如,文章中提到的“RideSynergy”应用可能是用来演示如何利用Java EE 5的Web服务和EJB 3.0功能来构建一个简化开发流程的实例。 综上所述,Java EE 5通过减少复杂性并提高开发者的生产力,巩固了其在企业级应用...

    Java 调用.NET web服务

    本文将详细介绍如何在Java中调用.NET Web服务,涉及的关键技术包括WSDL(Web Services Description Language)、JAX-WS(Java API for XML Web Services)以及一些必要的工具和步骤。 1. **理解WSDL**: WSDL是描述...

    java-webservice实例

    Java WebService实例是一个实际操作教程,它展示了如何在Java环境中创建和发布Web服务。Web服务是一种基于开放标准的,能够使应用程序在不同平台之间交换数据的技术。本实例着重于使用Java API for XML Web Services...

    Beginning Java EE 7.pdf

    - **Web 服务客户端与服务端**:讲解如何在 Java 应用中实现 SOAP Web 服务的客户端和服务端。 ##### 第15章:RESTful Web 服务 - **REST 架构风格**:介绍 RESTful 架构的基本原理和设计理念。 - **JAX-RS 规范**...

    java-ee-warehouse Java学习资料

    9. **WS(Web Services)**:Java EE支持创建和消费Web服务,如JAX-WS(Java API for XML Web Services)和JAX-RS(Java API for RESTful Web Services)。 10. **JNDI(Java Naming and Directory Interface)**:...

    Professional Java EE Design Patterns

    - RESTful Web Services(第13章)介绍了构建基于REST架构风格的Web服务,使Web服务与客户端之间能够进行无状态的通信。 - Model-View-Controller(MVC)模式(第14章)是一个结构型模式,用于分离业务逻辑、用户...

    WebService客户端调用服务器数据库

    - **JAX-WS (Java API for XML Web Services)**:是Java SE和Java EE中的标准API,用于构建和部署Web服务。通过JAX-WS,开发者可以创建服务端点和客户端代理。 4. 数据库连接: - **WebService与数据库交互**:...

    使用Myeclipse-8.5开发基于JAX-WS的Web-service实例.docx

    本文档主要介绍了使用 Myeclipse 8.5 开发基于 JAX-WS 的 Web Service 实例的步骤,涵盖了 Web 服务程序和客户端程序的基本流程,以及在 Weblogic 10.3.4 中部署 Web 服务的步骤。 一、Web 服务开发环境 * JAVA ...

    如何基于JAX-WS开发一个WebService实例

    JAX-WS提供了一种简单的方式来创建SOAP(Simple Object Access Protocol)Web服务,它集成了Java SE和Java EE平台,使得开发者可以方便地实现服务接口和服务实现,然后通过工具自动生成WSDL(Web Service ...

Global site tag (gtag.js) - Google Analytics