gpt4 book ai didi

java - JAXWS 客户端是否区分空集合和空集合值作为返回值?

转载 作者:行者123 更新时间:2023-12-04 06:58:29 25 4
gpt4 key购买 nike

由于 JAX-WS 依赖于 JAXB,并且由于我观察到在 JAX-B 引用实现中解压 XML bean 的代码,我猜没有区别并且 JAXWS 客户端总是返回一个空集合,即使 web 服务结果是空元素:

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

我同意最好的互操作性服务契约(Contract)应该是明确的并避免这种差异,但似乎我正在调用的 JAX-WS 服务(托管在具有 Jbossws 实现的 Jboss 服务器上)总是按预期返回一个 null 空集合(使用 SoapUI 测试)。

我用于由 wsimport 生成的测试代码。
返回元素定义为:
@XmlElement(name = "return", nillable = true)
protected List<String> _return;

我什至测试过将 Response 类的 getReturn 方法更改为:
public List<String> getReturn() {
if (_return == null) {
_return = new ArrayList<String>();
}
return this._return;
}


public List<String> getReturn() {
return this._return;
}

但没有成功。

欢迎任何有关此问题的有用信息/评论!

最佳答案

没有办法区分空集合和 null在 XML 中。集合通常被序列化为一系列标签(架构中的 xs:sequence),没有代表集合本身的封闭标签。

<item value="item1"/>
<item value="item2"/>

我担心你是否获得 null一个空的集合将是特定于实现的,我不会依赖它。如果需要区分,可以将集合包装到另一个对象中以生成封闭标记(我没有找到另一种生成封闭标记的方法)。
<items>
<item value="item1"/>
<item value="item2"/>
</items>

关于java - JAXWS 客户端是否区分空集合和空集合值作为返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2250504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com