web-services - ArrayOfXXX 类超出数组类型的 soap 输入参数

标签 web-services soap cxf jax-ws soap-client

我有一个输入参数为数组的方法。当我从中生成 stub 时,它会创建列表类型。

但我想知道如何围绕数组类型创建包装类,例如上课 Apple它应该创建 ArrayOfApple .

是否需要在类中进行任何更改或需要使用任何特定插件?

注意:我正在使用 JAXWSApache CXF实现

示例代码如下:

EmployeeService.java :

@WebService(endpointInterface="com.test.EmployeeService")
@SOAPBinding(style=Style.DOCUMENT)
public class EmployeeService {

    public String updateEmpRoles(@WebParam(name="EmpRoles")EmpRole[] empRoles) {
        return "SUCCESS";
    }
}

EmpRole.java :

@XmlType(name="EmpRole")
public class EmpRole {
    private String empRole;

    public String getEmpRole() {
        return empRole;
    }

    public void setEmpRole(String empRole) {
        this.empRole = empRole;
    }
}

发布后,wsdl 生成如下 -

enter image description here

但我期望的是 WSDL 应该创建 ArrayOfEmpRole它应该包装 List<EmpRole> .

请帮忙

简而言之 - 我想要 Björn 在下面的链接中不想要的东西。 (在他的情况下,它会自动创建 ArrayOfXXX,这就是我所需要的)- Arrays in SOAP method Parameters generated via JAX-WS?

最佳答案

我将从代码优先切换到契约(Contract)优先方法,这意味着从 WSDL 开始并使用 wsdl2java 从中生成一个 stub 。这样您就可以确保 WSDL 看起来像您想要的那样。

如果您想坚持当前的方法,实现包装器的最简单方法可能是引入另一个类。

关于web-services - ArrayOfXXX 类超出数组类型的 soap 输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53514875/

相关文章:

java - 如何在 jax-rs 的 ContainerRequestFilter 中获取资源方法注释

java - Apache CXF 是否支持基于 JAX-RPC 的 Web 服务(SOAP)

php - 在 PHP Web 服务中返回对象数组

node.js - node-soap 只向 Mechanical Turk 发送 "Help"请求?

java - Apache CXF 中基于 WebSockets 的 SOAP?

java - Spring Boot SOAP WS 端点

java - Apache CXF 2.0.12 到 2.2.7 升级问题

c# - jsTree 3.0.2 - 如何将参数传递给 aspx webmethod

c# - 从 C# Web 服务调用或调用 C# 控制台应用程序?

xml - 从 Web 服务加载 XML