Java 通过JAX-WS生成的SOAP方法参数中的数组?
我正在用JAX-WS注释用Java构建SOAP服务。除此之外,我想知道如何在我的方法中注释数组参数。当我从带注释的接口生成wsdl,然后再次从该wsdl生成java类时(我这样做是为了测试,在这两种情况下都使用ApacheCXF),它将生成类来保存数组参数 例如:Java 通过JAX-WS生成的SOAP方法参数中的数组?,java,soap,jaxb,jax-ws,Java,Soap,Jaxb,Jax Ws,我正在用JAX-WS注释用Java构建SOAP服务。除此之外,我想知道如何在我的方法中注释数组参数。当我从带注释的接口生成wsdl,然后再次从该wsdl生成java类时(我这样做是为了测试,在这两种情况下都使用ApacheCXF),它将生成类来保存数组参数 例如: @WebService(name="sillyService", ... ) @SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERA
@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的数组,而不是数组
有没有办法让它直接接受数组作为参数?感谢…在我的例子中,apache CXF从WSDL文件生成的代码包括
ArrayOfXXX
类,使用一个getXXX()
方法返回一个列表。
此方法的自动生成javadoc声明:
此访问器方法返回对活动列表的引用,
不是快照。因此,您对
返回的列表将出现在JAXB对象中。
这就是为什么guid属性没有set
方法的原因。
例如,要添加新项目,请执行以下操作:
getXXX().add(newItem)代码>
为了回答您的问题,您不能将本机数组传递给该方法,但可以在将元素添加到其基础列表后传递该数组类。为此,您可以使用getXXX()从数组包装器中检索封装的列表
并向其中添加元素。尝试使用列表在我的情况下,我希望我的wsdl包含ArrayOfxx。但无法实现它。这是我的问题。请告诉我您使用哪个版本的CXF创建ArratOfLOB。或者需要任何JaxB注释。@AvinashJethy抱歉,我唯一能提供的是版本:我使用的cxf-rt前端jaxws
和cxf-rt从maven传输http
,两个版本都是3.2.0。代码不是我的,所以我不知道注释。