RSS订阅
RSS订阅TT SOA
您现在的位置:TT SOA > Java Web服务 > JAX-WS 2.0规范(四)

JAX-WS 2.0规范(四)

2008-10-10  选择字号:  | |
打印本文章

导读:默认消息映射到应用里具体的异常。输入和输出消息的内容使用两个不同的样式映射到Java方法参数:非包装和wrapper样式。这两种映射样式在下面的部分描述。

关键词:Java 非包装 wrapper样式 映射样式

正在加载数据...

  继续WSDL 1.1到Java的映射............  

  2.3.1 message和part

  每一个wsdl:operation涉及一个或多个wsdl:message元素,这个元素里面有wsdl:input、wsdl:output和wsdl:fault子元素,分别描述此操作的输入、输出和默认消息。每一个操作可以指定一个输入消息,0或1个输出消息,0或1个默认消息。

  例如:

  <wsdl:portType name="WebServiceSample">

  <wsdl:operation name="findUsers">

    <wsdl:input message="tns:findUsers" name="findUsers" />

    <wsdl:output message="tns:findUsersResponse" name="findUsersResponse" />

  </wsdl:operation>

  <wsdl:operation name="say">

    <wsdl:input message="tns:say" name="say" />

    <wsdl:output message="tns:sayResponse" name="sayResponse" />

  </wsdl:operation>

  <wsdl:operation name="sayUserName">

    <wsdl:input message="tns:sayUserName" name="sayUserName" />

    <wsdl:output message="tns:sayUserNameResponse" name="sayUserNameResponse" />

  </wsdl:operation>

  </wsdl:portType>

  默认消息映射到应用里具体的异常。输入和输出消息的内容使用两个不同的样式映射到Java方法参数:非包装(non-wrapper)和(包装)wrapper样式。这两种映射样式在下面的部分描述。注意,portType的绑定会影响到portType到Java的映射。

  注:

  1. 使用javax.jws.SOAPBinding: 从portType映射的SEI必须使用javax.jws.SOAPBinding注释标注,它描述了样式、编码和参数样式的选择。这个注释可以被省略,如果它的所有属性都有默认值。

  2. 使用javax.jws.WebParam:产生的Java方法参数必须使用javax.jws.WebParam注释标注。如果样式是rpc或样式是Document以及参数样式是空的,那么javax.jws.WebParam必须涉及到此参数的wsdl:part名。

  3. 使用javax.jws.WebResult:产生的Java方法必须使用javax.jws.WebResult注释标注。如果样式是rpc或如果样式是Document以及蚕食类型是空的,那么javax.jws.WebResult的partName元素必须涉及此参数的wsdl:part名。如果参数的所有属性都有默认值,那么注释可以被省略。

  2.3.1.1 非包装(Non-wrapper)样式

  wsdl:message由0或多个wsdl:part元素组成。例如:

  <wsdl:message name="sayUserName">

    <wsdl:part element="tns:sayUserName" name="parameters" />

  </wsdl:message>

  <wsdl:message name="say">

    <wsdl:part element="tns:say" name="parameters" />

  </wsdl:message>

  <wsdl:message name="findUsers">

    <wsdl:part element="tns:findUsers" name="parameters" />

  </wsdl:message>

  <wsdl:message name="sayResponse">

    <wsdl:part element="tns:sayResponse" name="parameters" />

  </wsdl:message>

  <wsdl:message name="sayUserNameResponse">

    <wsdl:part element="tns:sayUserNameResponse" name="parameters" />

  </wsdl:message>

  <wsdl:message name="findUsersResponse">

    <wsdl:part element="tns:findUsersResponse" name="parameters" />

  </wsdl:message>

  消息部分按如下分类:

  in          message部分当前仅在操作的输入消息里

  out               message部分当前仅在操作的输出消息里

  in/out    message部分当前在操作的输入和输出消息里

  两个部分被认为是一样的,如果他们有相同的name属性值以及他们引用了相同的全局元素或类型。使用non-wrapper样式,message部分可以按照它们的分类映射到Java参数:

  in          message部分被映射为一个方法参数

  out        message部分被映射为一个方法参数,通过使用一个holder类(参见2.3.3)或

  被映射为方法返回类型

  in/out   message部分使用一个holder类映射为一个方法参数

  应用可以通过使用jaxws:parameter(参见8.7.3)绑定声明来定制这个映射。

  2.3.2部分定义了规则,这个规则管理映射的Java方法中的参数次序以及被映射到方法返回类型的part的标识。

  2.3.1.2 包装(Wrapper)样式

  如果遇到下面的标准,WSDL operation将具有包装(wrapper)样式的映射:

  1.operation的输入和输出消息(如果存在)都包含一个单一的part

  2. 输入message part涉及了一个全局元素声明,这个全局元素的localname与operation名字一样

  3. 输出message part涉及了一个全局元素声明

  4. 输入和输出message part涉及的元素都是使用wsd:sequence排列定义的复杂类型

  5. 包装元素仅包含子元素,它们一定不能包含其他结构,比如通配符(元素或属性),xsd:choice,置换群或属性。

  在某些情况下,包装样式映射的使用会导致不需要的Java方法签名,这样的话非包装样式映射会更受欢迎一些。

  使用包装样式,包装元素的子元素(今后叫做wrapper children)被映射到Java参数,wrapper children按如下分类:

  in          wrapper children仅在输入消息part的wrapper元素里

  out        wrapper children仅在输出消息part的wrapper元素里

  in/out   wrapper children在输入和输出消息part的wrapper元素里

  如果两个wrapper children有相同的local名,相同的XML schema类型以及相同的Java类型(映射后),则认为它们是相等的。类似于non-wrapper,wrapper child的分类依赖于:

  in          wrapper child部分被映射为一个方法参数

  out        wrapper child部分被映射为一个方法参数,通过使用一个holder类(参见2.3.3)或被映射为方法返回类型

  in/out   wrapper child部分使用一个holder类映射为一个方法参数

  应用可以通过使用jaxws:parameter(参见8.7.3)绑定声明来定制这个映射。

原文出处:http://gocom.primeton.com/blog13040_35328.htm
来源:goCom构客网    作者:liang_ma    
近日,由全球最大的中文技术社区Csdn主办的“中国软件开发2.0技术大会”(SD2C 2008)在北京九华山庄拉开帷幕,一千多名CTO、架构师、项目经理与开发管理人员及软件……
企业应用技术架构的演进会经历3个主要阶段:主机架构、客户机/服务器架构、企业服务架构。他们之间的主要区别是……
四十年前,为了满足企业商业应用软件的需要IBM研发出了CICS这个IT恐龙时代的产物;二十多年前,C/S的企业应用架构所带来的技术革命让企业级应用的门槛从几百万美元降到……
1.快速响应需求变化。2.协助梳理、优化和改造业务流程。3.方便工作、管理、分析和决策 刚完成一个大事业单位的业务流程整合,实现了多应用共用一个独立引擎……
根据Forrester Research的调查,客户对于实施BPM所带来的价值情况:提高流程工人的生产率 (24%调查者) Increased productivity for process workers……
虚拟化和SOA之间是一种间接的、相辅相成的关系。也许在IT及业务转型中,两者的结合使用会发挥最大的优势。虚拟化有助于更快地显示部署基础设施的投资回报率(ROI)。
云计算的概念越来越流行,Amazon、Google和IBM是第一批将云计算引入公众视线的公司。云计算就是新的Web2.0,一种既有技术上的市场绽放。
安全对于许多的IT部门来说都是一个重要的问题之一,但是SOA安全问题完全是在另一个新的纬度上了。对于SOA为一个机构所带来的许多的好处,例如具有在许多不同的提供者和供应商的情况下混合和匹配服务。
最新更新
专家答疑
技巧
Ron Schmelzer,Jason Bloomberg
你认为通过遵循IT组织步骤可以演变为SOA吗?ZapThink公司明确SOA实行肯定是一个挑战——也不应被视为这一倡议应得到执行的一个步骤就是整个企业的基础……
Dana Gardner
您能解释什么是“私有云”吗,能否举例说明?这是供应商需要建立的基础吗?作为托管服务供应商和服务供应商寻求最有效和最强大的基础设施,作为他们的“云”支持能力……
Andrew Pollack
我们正在寻找一种从主机选择SOAP服务器的请求。我们希望制造一个远程程序呼叫(RPC)从CICS程序的SOAP服务器,其中进程请求,使错误或成功后的反应……