我正在使用JAX-WS注释在Java中构建SOAP服务。除此之外,我想知道如何在我的方法中注释数组参数。当我从我的带注释的接口生成一个wsdl然后再从该wsdl生成java类时(我在测试中这样做,在两种情况下使用Apache cxf),它将生成用于保存数组参数的类。
示例:
@WebService(name="sillyService",
...
)
@SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, parameterStyle=SOAPBinding.ParameterStyle.BARE)
public interface SillyService {
public String doSillyThings(
@WebParameter(name = "stupid") StupidData[] stupid;
);
}
其中StupidData将是另一个注释类似
的类@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "StupidData")
public class StupidData {
@XmlElement(name = "datapoint")
String datapoint;
}
然后,在生成的类中,参数变为一个新的类StupidDataArray而不是一个数组,该类具有一个StupidData数组的字段。
是否可以直接接受数组作为参数?感谢...
答案 0 :(得分:1)
就我而言,apache CXF从WSDL文件生成的代码包含ArrayOfXXX
个类,其中一个getXXX()
方法返回List
。
此方法的自动生成的javadoc指出:
此访问器方法返回对实时列表的引用, 不是快照。因此你做的任何修改 返回的列表将出现在JAXB对象中。 这就是guid属性没有
set
方法的原因。 例如,要添加新项目,请执行以下操作:getXXX().add(newItem);
要回答您的问题,您不能将本机数组传递给该方法,但可以在将元素添加到其基础列表后传递Array类。为此,您使用List
从数组包装器中检索封装的getXXX()
并向其中添加元素。