Java JAXWS客户端是否区分空集合和作为返回值的空集合值?
由于JAX-WS依赖于JAXB,并且由于我观察到在JAX-B参考实现中解压XML bean的代码,我猜两者之间没有区别,而且JAXWS客户端总是返回空集合,即使webservice结果是空元素:Java JAXWS客户端是否区分空集合和作为返回值的空集合值?,java,xml,web-services,jax-ws,Java,Xml,Web Services,Jax Ws,由于JAX-WS依赖于JAXB,并且由于我观察到在JAX-B参考实现中解压XML bean的代码,我猜两者之间没有区别,而且JAXWS客户端总是返回空集合,即使webservice结果是空元素: public T startPacking(BeanT bean, Accessor<BeanT, T> acc) throws AccessorException { T collection = acc.get(bean); if(collection==
public T startPacking(BeanT bean, Accessor<BeanT, T> acc) throws AccessorException {
T collection = acc.get(bean);
if(collection==null) {
collection = ClassFactory.create(implClass);
if(!acc.isAdapted())
acc.set(bean,collection);
}
collection.clear();
return collection;
}
public T启动包(BeanT bean、访问器acc)抛出AccessorException{
T collection=acc.get(bean);
if(集合==null){
collection=ClassFactory.create(implClass);
如果(!acc.isAdapted())
acc.set(bean,集合);
}
collection.clear();
回收;
}
我同意为了实现最佳互操作性,服务契约应该是不含糊的,并避免这种差异,但我正在调用的JAX-WS服务(托管在带有Jbossws实现的Jboss服务器上)似乎总是按照预期返回空集合(使用SoapUI测试)
我使用wsimport生成的测试代码。
返回元素定义为:
@XmlElement(name = "return", nillable = true)
protected List<String> _return;
@xmlement(name=“return”,nillable=true)
受保护名单(返回);;
我甚至测试了将响应类getReturn方法更改为:
public List<String> getReturn() {
if (_return == null) {
_return = new ArrayList<String>();
}
return this._return;
}
public List getReturn(){
if(_return==null){
_return=newarraylist();
}
归还这个;
}
到
public List getReturn(){
归还这个;
}
但是没有成功
欢迎提供有关此问题的任何有用信息/意见 无法区分XML中的空集合和
null
。集合通常被序列化为一系列标记(xs:sequence
,在模式中),没有表示集合本身的封闭标记
<item value="item1"/>
<item value="item2"/>
<item value="item1"/>
<item value="item2"/>
<items>
<item value="item1"/>
<item value="item2"/>
</items>