<?
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
"
>
<
xsd:import
namespace
="
http://JASWS/
"
schemaLocation
="
http://127.0.0.1:8080/helloService?xsd=1
"
/>
</
xsd:schema
>
</
types
>
<
part
name
="
parameters
"
element
="
tns:selectMaxLongNameStudent
"
/>
</
message
>
<
part
name
="
parameters
"
element
="
tns:selectMaxLongNameStudentResponse
"
/>
</
message
>
<
part
name
="
parameters
"
element
="
tns:selectMaxAgeStudent
"
/>
</
message
>
<
part
name
="
parameters
"
element
="
tns:selectMaxAgeStudentResponse
"
/>
</
message
>
<
input
wsam:Action
="
http://JASWS/HelloServiceImpl/selectMaxLongNameStudentRequest
"
message
="
tns:selectMaxLongNameStudent
"
/>
<
output
wsam:Action
="
http://JASWS/HelloServiceImpl/selectMaxLongNameStudentResponse
"
message
="
tns:selectMaxLongNameStudentResponse
"
/>
</
operation
>
<
input
wsam:Action
="
http://JASWS/HelloServiceImpl/selectMaxAgeStudentRequest
"
message
="
tns:selectMaxAgeStudent
"
/>
<
output
wsam:Action
="
http://JASWS/HelloServiceImpl/selectMaxAgeStudentResponse
"
message
="
tns:selectMaxAgeStudentResponse
"
/>
</
operation
>
</
portType
>
<
soap:binding
transport
="
http://schemas.xmlsoap.org/soap/http
"
style
="
document
"
/>
</
binding
>
<
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>
的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);
例如:
@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 消息封装格式、发布地址等。
这个元素将输入参数(方法参数)和响应结果(方法返回值)、受检查的异常信息包装为消
息。
(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 服务的地址。
这个元素的name 属性指定服务名称(这里与根元素的name 属性相同),子元素<wsdl:port…的name 属性指定port 名称,子元素<soap:address … 的location 属性指定Web 服务的地址。