java soap 集合数组,SOAP方法中的数组通过JAX-WS生成的参数?

I am building a SOAP service in Java with JAX-WS annotations. Among other things I wonder how to annotate array parameters in my methods. At the moment when I generate a wsdl from my annotated interface and then generate java classes again from that wsdl (I do that for testing, in both cases using Apache cxf), it will generate Classes to hold the array parameters.

Example:

@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;

);

}

Where StupidData would be another class annotated like this

@XmlAccessorType(XmlAccessType.FIELD)

@XmlRootElement(name = "StupidData")

public class StupidData {

@XmlElement(name = "datapoint")

String datapoint;

}

Then instead of an Array, in the generated classes the Parameter becomes a new class StupidDataArray which has a filed that is the array of StupidData.

Any way to make it accept the array as parameter directly? Thanks...

解决方案

In my case, the code generated by apache CXF from the WSDL files includes ArrayOfXXX classes, with a single getXXX() method returning a List.

The autogenerated javadoc of this method states:

This accessor method returns a reference to the live list,

not a snapshot. Therefore any modification you make to the

returned list will be present inside the JAXB object.

This is why there is not a set method for the guid property.

For example, to add a new item, do as follows:

getXXX().add(newItem);

To answer your question, you can't pass a native array to the method but you can pass the Array class after you have added elements to its underlying list. To do that, you retrieve the encapsulated List from the array wrapper using getXXX() and add elements to it.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值