It kind of depends on where the Map is used. If it's used inside a JAXB
bean, it will work fine. When JAXB is processing the bean, it recognizes the
map and will create a "generic" schema for it. (not pretty, but works).
The schema kind of sucks which is why the @XmlJavaTypeAdapter is strongly
recommended.
However, you cannot create a JAXB context that will marshall/unmarshall a Map.
It will throw a "interfaces are not allowed" type of exception. Thus, Maps
aren't really usable for top level types.
Thus, it's a kind of "half supportable" type thing.
Dan
On Wed June 17 2009 2:25:26 am L. J.W wrote:
> Hi all,I am using cxf 2.2.2,in
> sample/java_first_jaxws/HelloWorld.java,I found the comment:
> /* Map passing
> * JAXB also does not support Maps. It handles Lists great, but Maps
> are
> * not supported directly. They also require use of a XmlAdapter to
> map * the maps into beans that JAXB can use.
> */
> @XmlJavaTypeAdapter(IntegerUserMapAdapter.class)
> Map<Integer, User> getUsers();
>
> It seems map not supported by cxf or jaxb.
>
> but I write my SEI like following:
>
> public StudentInfo getStudentInfo(String studentId);
>
> and StudentInfo.java like following:
>
> .....
>
> private Map addressMap;
>
> public Map<String,Address> getAddressMap() {
> return addressMap;
> }
> public void setAddressMap(Map<String,Address> addressMap) {
> this.addressMap = addressMap;
> }
>
> .....
>
> then I publish above to web service.
>
> and I find the map in StudentInfo can transfer from service provider to
> service consumer.
>
> so,I am confused whether cxf 2.2.2 support map databinding or not?
>
> Thanks.
--
Daniel Kulp
[email protected]
http://www.dankulp.com/blog