这是生成wsdl的Java代码:
@WebMethod(action = "sendRequest")
@WebResult(partName= "message")
public String addRequest(@WebParam(partName = "firstName") String firstName,
@WebParam(partName = "lastName") String lastName, @WebParam(partName = "jmbg") long jmbg,
@WebParam(partName = "dateTime") Date dateTime) {
try {
appointmentManager.getAppointmentRequest().add(new AppointmentRequest(firstName, lastName, jmbg, dateTime));
return "Central office is closed due to the reconstruction. It will reopen on Monday.";
} catch (Exception e) {
return "Wrong format";
}
}`
这是我生成的wsdl中的结果复杂类型:`
<xs:complexType name="addRequest">
<xs:sequence>
<xs:element minOccurs="0" name="arg0" type="xs:string"/>
<xs:element minOccurs="0" name="arg1" type="xs:string"/>
<xs:element name="arg2" type="xs:long"/>
<xs:element minOccurs="0" name="arg3" type="xs:dateTime"/>
</xs:sequence>
</xs:complexType>`
如您所见。输入的args称为arg0,arg1,arg2,arg3,而不是我在注释中指定的名称。
请善用@WebParam的属性name。例如,在您的情况下,您的方法签名可能看起来像:
public String addRequest(@WebParam(name = "firstName") String firstName,
@WebParam(name = "lastName") String lastName, @WebParam(name = "jmbg") long jmbg,
@WebParam(name = "dateTime") Date dateTime)
请仅在Web服务操作为RPC样式或Document样式且参数样式为BARE时使用partName。对于默认参数样式WRAPPED,不应使用此partName属性(转换为wsdl:part名称)。默认情况下,如果未指定partName,则默认值为@ WebParam.name
Recommendation:最好仅使用包含所有属性的POJO,除非wsdl已被共享,以便最大程度地减少方法的参数数量以增强strong text干净的代码,“ XML编组和反编组”将更快。