l="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
<s:element name="HelloWorld">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="id" type="s:int" />
<!--nillable默认为false,minOccurs等于1:即id元素为必输,且值不能为空-->
<s:element minOccurs="1" maxOccurs="1" name="phoneNbr" nillable="true" type="s:int" />
<!--nillable等于true,minOccurs等于1:即phoneNbr元素为必输,但值可以为空-->
<s:element minOccurs="0" maxOccurs="1" name="name" type="s:string" />
<!--nillable默认为false,minOccurs等于0:即name元素为非必输,但值不能为空-->
<s:element minOccurs="0" maxOccurs="1" name="person" type="tns:Person" />
<!--nillable默认为false,minOccurs等于0:即person元素为非必输,但值不能为空-->
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="Person">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="Id" type="s:int" />
<!--nillable默认为false,minOccurs默认为1:即id元素为必输,且值不能为空-->
<s:element minOccurs="0" maxOccurs="1" name="Name" type="s:string" />
<!--nillable默认为false,minOccurs等于0:即Name元素为非必输,但值不能为空-->
<s:element minOccurs="1" maxOccurs="1" name="PhoneNbr" nillable="true" type="s:int" />
<!--nillable默认为false,minOccurs等于1:即PhoneNbr元素为必输,但值可以为空-->
</s:sequence>
</s:complexType>
<s:element name="HelloWorldResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="HelloWorldResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
</wsdl:definitions>
2.1.4、得出结论
* id参数和Person.Id属性都为值类型:[元素节点] 都必输,[元素取值] 都不能为空
* phoneNbr参数和Person.PhoneNbr属性都是包装类型:[元素节点] 都必输,但[元素取值] 都可以为空;
* name参数和Person.Name属性都是普通引用类型:[元素节点] 都可以不输,但[元素取值] 都不能为空;
* person参数是普通引用类型:[元素节点] 可以不输,但[元素取值] 不能为空。
2.2 再看Java的规则
首先,先熟悉在eclipse中快速开发webservice程序的步骤,参考链接:http://www.blogjava.net/parable-myth/archive/2010/08/03/327802.html,此次实验采用的就是这种快速开发方式(注:不同的框架和工具会可能会有不同的生成规则),所用ecllipse版本为:
Version: Juno Service Release 1
Build id: 20121004-1855
2.2.1、定义数据实体:Person.java
package com.lubiao.axis;
public class Person implements java.io.Serializable {
private int id;//编号,值类型
private java.lang.String name;//姓名,普通引用类型
private Integer phoneNbr;//电话,包装类型
public int getId() {return id;}
public void setId(int id) {this.id = id;}
public java.lang.String getName() {return name;}
public void setName(java.lang.String name) {this.name = name;}
public Integer getPhoneNbr() {return phoneNbr;}
public void setPhoneNbr(Inte