【问题标题】:ArrayOfXXX class out of soap input param of array typeArrayOfXXX 类超出数组类型的肥皂输入参数
【发布时间】:2018-11-28 08:13:33
【问题描述】:

我有一个输入参数为数组的方法。当我从中生成存根时,会创建 List 类型。

但我想知道如何围绕数组类型创建一个包装类,例如对于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 生成如下 -

但我期望 WSDL 应该创建 ArrayOfEmpRole 并且应该包装 List<EmpRole>

请帮忙

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

【问题讨论】:

  • 如果你把你正在使用的代码放在上面,可能会得到更多帮助!
  • @JGlass 我在这里添加了我的代码。简而言之,我想要 Björn 不想要的东西。(在他的情况下,它会自动创建 ArrayOfXXX,这就是我需要的) - stackoverflow.com/questions/9587645/…

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


【解决方案1】:

我将从 Code first 切换到 Contract first 方法,这意味着从 WSDL 开始并使用 wsdl2java 从中生成一个存根。这样您可以确保 WSDL 看起来像您想要的那样。

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

【讨论】:

  • 感谢丹尼斯的回答,但我必须坚持代码优先的方法。如果我要引入另一个包装类,那么它会在很多地方进行代码更改(我不想要) .但是如果你看到这个链接 - 人们会自动生成他们不想要的 ArrayOfxxx 。想知道如何?stackoverflow.com/questions/9587645/…
猜你喜欢
  • 1970-01-01
  • 2014-08-18
  • 2012-09-18
  • 1970-01-01
  • 2020-03-07
  • 2012-04-11
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
相关资源
最近更新 更多