首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

转:Web Service学习札记

2013-07-16 
转:Web Service学习笔记?常用的SOAP Fault Codes??HTTP协议中的SOAP 实例?下面的例子中,一个 GetStockPric

转:Web Service学习笔记

    ?
    常用的SOAP Fault Codes?
    转:Web Service学习札记?

    HTTP协议中的SOAP 实例?
    下面的例子中,一个 GetStockPrice 请求被发送到了服务器。此请求有一个 StockName 参数,而在响应中则会返回一个 Price 参数。此功能的命名空间被定义在此地址中: "http://www.jsoso.net/stock"?
    SOAP 请求:(注意HTTP的Head属性)
    ?

    WSDL简介?
    介绍过了SOAP,让我们关注Web Service中另外一个重要的组成WSDL。?
    WSDL的主要文档元素?
    转:Web Service学习札记?
    WSDL文档可以分为两部分。顶部分由抽象定义组成,而底部分则由具体描述组成。抽象部分以独立于平台和语言的方式定义SOAP消息,它们并不包含任何随机器或语言而变的元素。这就定义了一系列服务,截然不同的应用都可以实现。具体部分,如数据的序列化则归入底部分,因为它包含具体的定义。在上述的文档元素中,<types>、<message>、<portType>属于抽象定义层,<binding>、<service>属于具体定义层。所有的抽象可以是单独存在于别的文件中,也可以从主文档中导入。?

    WSDL文档的结构实例解析?
    下面我们将通过一个实际的WSDL文档例子来详细说明各标签的作用及关系。?
    属性operationName匹配的wsdl:operation 的名称,如<operation name="toSayHello" parameterOrder="userName">?
    属性exclude 用于阻止将某一继承方法公开为web服务,默认为false?

    Annotation 4:@WebResult(name="returnWord")?
    @ WebResult定义方法返回值得名称,如<part name="returnWord" type="xsd:string" />?

    Annotation 5:@WebParam(partName="person", mode=Mode.IN?
    @WebParam定义方法的参数名称,如<part name="person" type="tns:person" />,其中mode属性表示参数的流向,可选值有IN / OUT / INOUT?

    这里要着重说明的是,上述Web Service类的sayHello方法中,带有HelloException这个异常声明,造成该服务类不能直接发布成Web Service。需要使用wsgen工具为其生存异常Bean。关于wsgen工具的使用,请参考wsgen与wsimport命令说明?

    发布一个的Java Web Service?
    在完成了上述的Web Service Annotation注释后,我们使用wsgen工具为其进行服务资源文件的构造(这里主要是生成一个名为org.jsoso.jws.server.jaxws.HelloExceptionBean的异常bean类),最后使用以下的类发布Web 服务:?
    ????}??
  1. }??

届此,本次Web Service的学习暂告一个段落。Java Web Service是一个相当庞大的知识体系,其中涉及的相关技术较多,这里无法一一道来,我们将会在今后的开发和使用中,同大家做进一步深入的探讨和学习。?

附录:wsgen与wsimport命令说明?

wsgen?
wsgen是在JDK的bin目录下的一个exe文件(Windows版),该命令的主要功能是用来生成合适的JAX-WS。它读取Web Service的终端类文件,同时生成所有用于发布Web Service所依赖的源代码文件和经过编译过的二进制类文件。这里要特别说明的是,通常在Web Service Bean中用到的异常类会另外生成一个描述Bean,如果Web Service Bean中的方法有申明抛出异常,这一步是必需的,否则服务器无法绑定该对像。此外,wsgen还能辅助生成WSDL和相关的xsd文件。wsgen从资源文件生成一个完整的操作列表并验证web service是否合法,可以完整发布。?
命令参数说明:?
? -cp 定义classpath? -r 生成 bean的wsdl文件的存放目录? -s 生成发布Web Service的源代码文件的存放目录(如果方法有抛出异常,则会生成该异常的描述类源文件)? -d 生成发布Web Service的编译过的二进制类文件的存放目录(该异常的描述类的class文件)
命令范例:wsgen -cp ./bin -r ./wsdl -s ./src -d ./bin -wsdl org.jsoso.jws.server.Example?

wsimport?
wsimport也是在JDK的bin目录下的一个exe文件(Windows版),主要功能是根据服务端发布的wsdl文件生成客户端存根及框架,负责与Web Service 服务器通信,并在将其封装成实例,客户端可以直接使用,就像使用本地实例一样。对Java而言,wsimport帮助程序员生存调用web service所需要的客户端类文件.java和.class。要提醒指出的是,wsimport可以用于非Java的服务器端,如:服务器端也许是C#编写的web service,通过wsimport则生成Java的客户端实现。?
命令参数说明:?
? -d 生成客户端执行类的class文件的存放目录? -s 生成客户端执行类的源文件的存放目录? -p 定义生成类的包名
命令范例:wsimport -d ./bin -s ./src -p org.jsoso.jws.client.ref http://localhost:8080/hello?wsdl ?

热点排行