JAX-WS wsgen和集合集合:wsgen坏了吗?

时间:2009-12-21 23:23:28

标签: jax-ws wsgen

我一直在玩“自下而上”的JAX-WS,并且在运行wsgen时遇到了一些奇怪的事情。

如果我有一个类似的服务类:

@WebService
public class Foo {
public ArrayList<Bar> getBarList(String baz) { ... }
}

然后运行wsgen给我一个FooService_schema1.xsd,它有这样的东西:

<xs:complexType name="getBarListResponse">
<xs:sequence>
<xs:element name="return" type="tns:bar" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>

这似乎是合理的。

但是,如果我想要一系列集合,如:

public BarCollection getBarCollection(String baz) { ... }  // BarCollection is just a container for an ArrayList<Bar>

然后生成的模式最终会出现以下内容:

<xs:complexType name="barCollection">
  <xs:sequence/>
</xs:complexType>

<xs:complexType name="getBookCollectionsResponse">
<xs:sequence>
<xs:element name="return" type="tns:barCollection" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>

空序列不是我的想法。

我最初的做法是:

public ArrayList<ArrayList<Bar>> getBarLists(String baz) { ... }

但最终会出现一大串complexTypes,最后只会结束一个空序列:

<xs:complexType name="getBarListsResponse">
<xs:sequence>
<xs:element name="return" type="tns:arrayList" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="arrayList">
<xs:complexContent>
<xs:extension base="tns:abstractList">
<xs:sequence/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="abstractList" abstract="true">
<xs:complexContent>
<xs:extension base="tns:abstractCollection">
<xs:sequence/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="abstractCollection" abstract="true">
<xs:sequence/>
</xs:complexType>

我错过了什么,或者这是wsgen的一个已知洞? JAXB?

安迪

0 个答案:

没有答案