李力的专栏

Ada Li @ Sun Microsystems

用户操作
[即时聊天] [发私信] [加为好友]
Ada LiID:Adali
93785次访问,排名1057,好友0人,关注者64人。
李力(Ada Li)目前在Sun Microsystems任社区经理,从事技术推广和软件开发等工作。曾就职于AIG,CA等公司,任高级软件工程师及系统分析员等职位,有十年Java领域的软件开发经验。于东北大学和南开大学获得计算机软件学士和硕士学位。
Adali的文章
原创 36 篇
翻译 2 篇
转载 3 篇
评论 110 篇
Ada Li的公告
最近评论
ooo:为什么我用IE 或 OPERA 打开网页时显示良好 而用模拟器 的浏览器打开时 网页排版全乱了
Hawkeyes0:如果web service需要http验证怎么处理,我连接的时候服务器返回http-401,然后tomcat就抛出异常了
solomon_wzs:vb使用时内存占用比较大,而且与虚拟机的内存成正比,vm则不会,个人推测vb的虚拟内存是在物理内存上,而vm的则在硬盘上,因此也就推测vb的运行效率应该比较高。

另外,vb免费小巧,vm则越来越笨重,而且会加入一大堆系统服务,影响开机速度和加大内存占用。就个人使用的
感觉而言,两者差不多,因此对于一般用户,我建议用vb,就像一般人买车,干嘛要买高档跑车,买小型……
wukaikay:我还是使用的绿色版的VM,功能就是好
我也使用过virtualbox ,觉得不是太好
功能还有待加强
还有就是,不要觉得它是开源就觉得它好
sap99:www.sap99.com/,SAP99资料多多

SAP免费资料下载
http://www.sap99.com

有很多的学习资料,推荐一下,
文章分类
收藏
    相册
    ajax_jsf_upload
    Google AdSense
    javaee5_bookstore
    jMaki
    MetaWeblog API
    NetBeans_javame_deployment
    netbeans_tips
    virtualbox
    webservices_stock
    开源软件
    GlassFish - 企业应用服务器
    MySQL - 数据库
    NetBeans - 开发平台
    OpenJDK - Java虚拟机
    OpenOffice - 办公软件
    OpenSolaris - Unix操作系统
    OpenSparc - 多线程处理器
    圈圈
    Sang Shin : 技术传道士典范
    沈卓立 : 玩转地球
    王星耀 : Sun工程院院长
    蒋清野 : 婉兮清扬
    郭朝峰 : OpenSolaris狂热会员
    中国开源社区
    LUPA - 开源推进联盟社区
    ZEUUX哲思 - 自由软件社团
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

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

    新一篇: (二)Java EE 5实现Web服务(Web Services)及多种客户端实例-实现Web服务 | 旧一篇: 仿真器(emulator)和模拟器(simulator)的区别

    ()Web服务(Web Services)原理

    一个 实时的股票报价的Web服务


    在讲Web服务之前,先看一个实时的股票报价的Web服务。

    http://www.webservicex.net/stockquote.asmx?op=GetQuote

    symbol栏中输入中国工商银行的股票代码“601988.SS”(中国沪市的后缀是SS, 比如中国银行601988.SS,深市后缀是SZ, 比如万科A000002.SZ)。



    得到的结果是XML格式的文档。

     

    <?xml version="1.0" encoding="utf-8" ?> 
      
    <string xmlns="http://www.webserviceX.NET/">
          
    <StockQuotes>
              
    <Stock>
                  
    <Symbol>601988.SS</Symbol>
                  
    <Last>5.90</Last>
                  
    <Date>8/20/2007</Date>
                  
    <Time>9:37pm</Time>
                  
    <Change>+0.14</Change>
                  
    <Open>5.90</Open>
                  
    <High>5.95</High>
                  
    <Low>5.85</Low>
                  
    <Volume>17503092</Volume>
                  
    <MktCap>N/A</MktCap>
                  
    <PreviousClose>5.76</PreviousClose>
                  
    <PercentageChange>+2.43%</PercentageChange>
                  
    <AnnRange>3.23 - 6.35</AnnRange>
                  
    <Earns>0.00</Earns>
                  
    <P-E>N/A</P-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还定义了基于HttpGetHttpPost的方法,但这不在本文讨论范围之内.

     

      <wsdl:binding name="StockQuoteSoap" type="tns:StockQuoteSoap">
        
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
        
    <wsdl:operation name="GetQuote">
          
    <soap:operation soapAction="http://www.webserviceX.NET/GetQuote" style="document"/>
          
    <wsdl:input>
            
    <soap:body use="literal"/>
          
    </wsdl:input>
          
    <wsdl:output>
            
    <soap:body use="literal"/>
          
    </wsdl:output>
        
    </wsdl:operation>
      
    </wsdl:binding>
    ......
      
    <wsdl:service name="StockQuote">
        
    <wsdl:port name="StockQuoteSoap" binding="tns:StockQuoteSoap">
          
    <soap:address location="http://www.webservicex.net/stockquote.asmx"/>
        
    </wsdl:port>
      
    </wsdl:service>

    2SOAP(Simple Object Access Protocol, )

    SOAP是一个基于XML的可扩展消息信封格式,需同时绑定一个传输用协议。这个协议通常是HTTP HTTPS,但也可能是SMTP XMPP

    Web服务使用者, 调用Web服务的方法, 使用的是SOAP格式的参数. 在前面的例子中, 发送请求的SOAP内容如下:

    SOAP request

     

    POST /stockquote.asmx HTTP/1.1
    Host: www.webservicex.net
    Content-Type: text/xml; charset=utf-8
    Content-Length: unknown
    SOAPAction: "http://www.webserviceX.NET/GetQuote"

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns: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>
        
    <GetQuote xmlns="http://www.webserviceX.NET/">
          
    <symbol>601988.SS</symbol>
        
    </GetQuote>
      
    </soap:Body>
    </soap:Envelope>

    web服务返回的相应SOAP内容如下:

    SOAP response

     

    HTTP/1.1 200 OK
    Content-Type: text/xml; charset=utf-8
    Content-Length: unknown

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns: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>
        
    <GetQuoteResponse xmlns="http://www.webserviceX.NET/">
          
    <GetQuoteResult><string xmlns="http://www.webserviceX.NET/"><StockQuotes><Stock><Symbol>601988.SS</Symbol><Last>5.90</Last><Date>8/20/2007</Date><Time>9:37pm</Time><Change>+0.14</Change><Open>5.90</Open><High>5.95</High><Low>5.85</Low><Volume>17503092</Volume><MktCap>N/A</MktCap><PreviousClose>5.76</PreviousClose><PercentageChange>+2.43%</PercentageChange><AnnRange>3.23 - 6.35</AnnRange><Earns>0.00</Earns><P-E>N/A</P-E><Name>"</Name></Stock></StockQuotes></string>
    </GetQuoteResult>
        
    </GetQuoteResponse>
      
    </soap:Body>
    </soap:Envelope>

    3UDDIUniversal 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格式的字符串进行解析,可以采用JAXPJava 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服务

     

    发表于 @ 2007年08月21日 19:56:00|评论(loading...)|编辑

    新一篇: (二)Java EE 5实现Web服务(Web Services)及多种客户端实例-实现Web服务 | 旧一篇: 仿真器(emulator)和模拟器(simulator)的区别

    评论

    #sap99 发表于2008-09-12 10:53:27  IP: 222.172.220.*
    www.sap99.com/,SAP99资料多多

    SAP免费资料下载
    http://www.sap99.com

    有很多的学习资料,推荐一下,
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © Ada Li