java - 在 JAX-WS Web 服务中使用 @WebParam(partName) 注释不起作用

标签 java web-services wsdl jax-ws

这是我生成 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>`
正如你所看到的。输入参数称为 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

建议:最好仅使用包含所有属性的 POJO,除非 wsdl 已共享,从而最大限度地减少方法的参数数量,从而增强强文本干净的代码,并且“XML 编码和解码”会更快。

关于java - 在 JAX-WS Web 服务中使用 @WebParam(partName) 注释不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40507027/

相关文章:

java - 如何获取类加载器的目录信息?

java - 在 Spring 中使用 Authentication 类测试 Controller

java - 无法使用 SSL 运行 Spring Boot 应用程序

java - 将包含内容的目录从 HDFS 复制到本地文件系统

php - 如何在 php 中调用 curl?

asp.net - 更改 ASP.NET 为 ASP.NET Web 服务生成的 WSDL

c# - 将普通类转换为 Web 服务类时出现 System.NotSupportedException 的原因

javax.net.ssl.trustStore 没有得到更新

python - 是否可以缓存 python suds 客户端?

architecture - SOA:为什么不使用 Erlang/OTP Web 服务器作为服务?