我有一个输入参数为数组的方法。当我从中生成 stub 时,它会创建列表类型。
但我想知道如何围绕数组类型创建包装类,例如上课 Apple
它应该创建 ArrayOfApple
.
是否需要在类中进行任何更改或需要使用任何特定插件?
注意:我正在使用 JAXWS
与 Apache 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?
最佳答案
我将从代码优先切换到契约(Contract)优先方法,这意味着从 WSDL 开始并使用 wsdl2java 从中生成一个 stub 。这样您就可以确保 WSDL 看起来像您想要的那样。
如果您想坚持当前的方法,实现包装器的最简单方法可能是引入另一个类。
关于web-services - ArrayOfXXX 类超出数组类型的 soap 输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53514875/