CXF系列之WSDL文件结构

(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: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、付费专栏及课程。

余额充值