WSDL分析

  <? xml version="1.0" encoding="UTF-8" ?>
<!--
 Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.4-b01. 
  -->
<!--
 Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.4-b01. 
  -->
- < definitions xmlns:wsu =" http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd " xmlns:wsp =" http://www.w3.org/ns/ws-policy " xmlns:wsp1_2 =" http://schemas.xmlsoap.org/ws/2004/09/policy " xmlns:wsam =" http://www.w3.org/2007/05/addressing/metadata " xmlns:soap =" http://schemas.xmlsoap.org/wsdl/soap/ " xmlns:tns =" http://JASWS/ " xmlns:xsd =" http://www.w3.org/2001/XMLSchema " xmlns =" http://schemas.xmlsoap.org/wsdl/ " targetNamespace =" http://JASWS/ " name =" HelloServiceImplService " >
- < types >
- < xsd:schema >
  < xsd:import namespace =" http://JASWS/ " schemaLocation =" http://127.0.0.1:8080/helloService?xsd=1 " />
  </ xsd:schema >
  </ types >
- < message name =" selectMaxLongNameStudent " >
  < part name =" parameters " element =" tns:selectMaxLongNameStudent " />
  </ message >
- < message name =" selectMaxLongNameStudentResponse " >
  < part name =" parameters " element =" tns:selectMaxLongNameStudentResponse " />
  </ message >
- < message name =" selectMaxAgeStudent " >
  < part name =" parameters " element =" tns:selectMaxAgeStudent " />
  </ message >
- < message name =" selectMaxAgeStudentResponse " >
  < part name =" parameters " element =" tns:selectMaxAgeStudentResponse " />
  </ message >
- < portType name =" HelloServiceImpl " >
- < operation name =" selectMaxLongNameStudent " >
  < input wsam:Action =" http://JASWS/HelloServiceImpl/selectMaxLongNameStudentRequest " message =" tns:selectMaxLongNameStudent " />
  < output wsam:Action =" http://JASWS/HelloServiceImpl/selectMaxLongNameStudentResponse " message =" tns:selectMaxLongNameStudentResponse " />
  </ operation >
- < operation name =" selectMaxAgeStudent " >
  < input wsam:Action =" http://JASWS/HelloServiceImpl/selectMaxAgeStudentRequest " message =" tns:selectMaxAgeStudent " />
  < output wsam:Action =" http://JASWS/HelloServiceImpl/selectMaxAgeStudentResponse " message =" tns:selectMaxAgeStudentResponse " />
  </ operation >
  </ portType >
- < binding name =" HelloServiceImplPortBinding " type =" tns:HelloServiceImpl " >
  < soap:binding transport =" http://schemas.xmlsoap.org/soap/http " style =" document " />
- < operation name =" selectMaxLongNameStudent " >
  < soap:operation soapAction =" " />
- < input >
  < soap:body use =" literal " />
  </ input >
- < output >
  < soap:body use =" literal " />
  </ output >
  </ operation >
- < operation name =" selectMaxAgeStudent " >
  < soap:operation soapAction =" " />
- < input >
  < soap:body use =" literal " />
  </ input >
- < output >
  < soap:body use =" literal " />
  </ output >
  </ operation >
  </ binding >
- < service name =" HelloServiceImplService " >
- < port name =" HelloServiceImplPort " binding =" tns:HelloServiceImplPortBinding " >
  < soap:address location =" http://127.0.0.1:8080/helloService " />
  </ port >
  </ service >
  </ definitions >

(1.)<wsdl:definitions …这个是WSDL 的根元素,我们要关心的是三个属性,name 属性值为公开的Web 服务的接口的实现类+Service(上例中name="HelloServiceImplService",不同的JAX-WS实现名字是不一样的);targetNamespace 指定目标名称空间,targetNamespace 的值被后面
的xmlns:tns 属性作为值, 默认是使用接口实现类的包名的反缀(targetNamespace="http://server.soap.ilkj.net/" …
xmlns:tns="http://server.soap.ilkj.net/"),你可以使用@WebService 注解的targetNamespace 属性指定你想要的名称空间。
(2.)<wsdl:types …
这个元素会通过<xs:element … 声明几个复杂数据类型的元素。一般首先你看到的是Web 服务中的方法参数、返回值所涉及的所有复杂(complex)类型的
元素定义<xs:element …,其中name 属性值是这个复杂类型的JAXB 注解的name 属性值,type 属性是tns:+JAXB 注解的name 属性值的全小写形式(上例中的方法参数、返回值只涉及一个复杂类型Customer,Customer 的@XmlRootElement 注解的name 属性值为Customer,因此你会看到<xs:element name="Customer" type="tns:customer" />)。再向下你会看到XXX 元素和XXXResponse 元素,其中XXX 是方法名称(你可以使用@WebMethod 的operationName 属性值指定XXX 的值),XXX 是对方法参数的封装,XXXResponse 是对返回值的封装,上例中你会看到<xs:element name="selectMaxAgeStudentMethod"
type="tns:selectMaxAgeStudentMethod" />
<xs:element name="selectMaxAgeStudentMethodResponse"
type="tns:selectMaxAgeStudentMethodResponse" />
<xs:element name="selectMaxLongNameStudent"
type="tns:selectMaxLongNameStudent" />
<xs:element name="selectMaxLongNameStudentResponse"
type="tns:selectMaxLongNameStudentResponse" />
内容,
最 后你会看到一组<xs:complexType … 元素, 这个元素通过name 属性关联到<xs:element … ,它为前面定义的元素指定封装的具体内容(通过子元素<xs:sequence … 指
定),上例中方法参数的复杂类型指定如下形式:
<xs:complexType name="selectMaxAgeStudentMethod">
<xs:sequence>
<xs:element minOccurs="0" name="arg0" type="tns:customer" />
<xs:element minOccurs="0" name="arg1" type="tns:customer" />
</xs:sequence>
</xs:complexType>
我们看到方法参数名称为arg0、arg1、…,如果你想指定方法参数的名字在方法参数前使用@WebParam 的name 属性指定值,同样,方法的返回值同样可以使用@WebResult 注解指定相关的属性值。
例如:
@WebResult(name = "method")
Customer selectMaxAgeStudent(@WebParam(name = "c1") Customer c1,
@WebParam(name = "c2") Customer c2);
(3.)<wsdl:message …
这个元素将输入参数(方法参数)和响应结果(方法返回值)、受检查的异常信息包装为消
息。
(4.)<wsdl:portType …
这个元素指定Web 服务的端口类型(Web 服务会被发布为EndPoint 端点服务),它的name属性默认为接口名称(你可以使用@WebService 注解的name 属性指定值)。这个元素包含了一系列的<wsdl:operation …子元素指定该端点服务包含了那些操作( 方法) ,<wsdl:operation …的子元素<wsdl:input …、<wsdl:output …指定操作的输入输出(通过属性message 绑定到前面声明过的消息)。
(5.)<wsdl:binding …
这个元素将前面最终的端点服务绑定到SOAP 协议(你可以看出来WSDL 从上到下依次有着依赖关系),其中的<soap:xxx … 的style、use 分别可以使用SOAPBinding 注解的style、use 属性指定值、<wsdl:operation … 指定公开的操作(方法)。这部分XML 指定最终发布的Web 服务的SOAP 消息封装格式、发布地址等。
(6.)<wsdl:service …
这个元素的name 属性指定服务名称(这里与根元素的name 属性相同),子元素<wsdl:port…的name 属性指定port 名称,子元素<soap:address … 的location 属性指定Web 服务的地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值