Jax ws @WebParam(partName)无效

时间:2016-11-09 12:27:42

标签: java web-services wsdl jax-ws

这是我生成wsdl:@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"; } }

的java代码

以下是我生成的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>

如你所见。输入参数名为arg0,arg1,arg2,arg3,而不是我在注释中指定的名称。

1 个答案:

答案 0 :(得分:0)

请使用@WebParam的属性名称。例如,在您的情况下,您的方法签名可能如下所示:

public String addRequest(@WebParam(name = "firstName") String firstName,
        @WebParam(name = "lastName") String lastName, @WebParam(name = "jmbg") long jmbg,
        @WebParam(name = "dateTime") Date dateTime)

当您的网络服务操作是RPC样式或文档样式且参数样式为BARE时,请仅使用 partName 。对于WRAPPED的默认参数样式,不应使用此partName属性(转换为 wsdl:part 名称)。默认情况下,如果未指定partName,则其默认值为@ WebParam.name

建议: 最好只使用包含所有属性 的POJO,除非已经共享wsdl ,以便最小化方法的参数数量,以便增强强文本清洁代码,并且“XML编组和解组”将更快。