Hi again Daniel, thanks for the feedback! > > When I run your test case for the non-wrapped case and look at the wsdl, I > just see: > > > <xs:complexType name="hashMap"> > <xs:complexContent> > <xs:extension base="tns:abstractMap"> > <xs:sequence /> > </xs:extension> > </xs:complexContent> > </xs:complexType> > <xs:complexType abstract="true" name="abstractMap"> > <xs:sequence /> > </xs:complexType> > > Which doesn't show any type of key/value thing. I do see the key/value thing > with the wrapper case though. Kind of interesting that there is a difference. Yes, isn't it interesting? ;-) ... but then it doesnt matter anymore, it is an odd side effect we cannot rely on anyway as we found out...
> >> Given this, it should be possible to write a XmlJavaTypeAdapter then >> we should be able to make this protocol backwards compatible on >> XML/SOAP level? > > In theory, yes. You COULD actually run wsdl2java on the wsdl and just use > the beans it creates for the map entries in your type adapter. Might be the > easiest starting point. We already did this manually, seems to work nicely, thanks for the tip! :-) > > >> Given what I read and your comment on Aegis it sounds really cool, but >> it seems it would likely break backward compatibility with older >> clients that was implemented with JAXB etc then? (since the default >> type bindings would be different?) > > Probably yes depending on the complexity of the data objects. I tested this and confirmed that backwards compatibility becomes messy, also even though Aegis seems very nice we need to prioritize compatibility with third-party clients and then going with JAXB seems the safest. > > Dan > > > >> >> On 5 November 2010 17:22, Daniel Kulp <dk...@apache.org> wrote: >> > Honestly, I'm surprised this works at all. HashMap is not a type >> > supported by JAX-WS/JAXB really at all. If you grabthe wsdl (?wsdl on >> > the endpoint), you would see that for those types, they are empty >> > sequences and thus should not have any ability to transfer data. >> > >> > If you use a very recent version of 2.2.x (like 2.2.11) or 2.3.0 and add: >> > @DataBinding(AegisDatabinding.class) >> > to the interfaces, it switches to the Aegisdatabinding which DOES support >> > HashMaps. When I do that, your tests pass fine. >> > >> > The alternative if you need/want to stick to JAXB is that you would need >> > to write an XmlJavaTypeAdapter thing to convert the maps to/from a List >> > of some struct to hold the data. See the java-first-jaxws sample in >> > the kit for an example of this. >> > >> > Dan >> > >> > On Thursday 04 November 2010 4:37:12 pm Kent Närling wrote: >> >> Hi, >> >> >> >> Me and my colleagues have written about this problem before, but >> >> thought we worked around it but now it came back to haunt us... >> >> >> >> >> >> As we already stated, sending HashMap<String, String> in >> >> requests/responses doesnt seem to work at all, they loose data, become >> >> corrupted or simply become null, >> >> As a workaround, we created a wrapper class, using the HashMap, which >> >> worked MUCH better... until we discovered problems under heavy volume, >> >> then suddenly this was also corrupted and we even saw signs that the >> >> response data were mixed up between different requests!! >> >> >> >> We were previously asked if this problem was reproducible with a small >> >> sample... >> >> (http://cxf.547215.n5.nabble.com/Unmarshalling-a-HashMap-only-works-some >> >> ti mes-td2638328.html) I have now created a small test project that >> >> re-produces both of these issues in a small code segment. >> >> There are two unit test classes included : TestUsingHashMap and >> >> TestUsingHashMapWrapper and each of them has two unit tests, one >> >> running in a single thread and the other running with 5 threads. >> >> >> >> Please, can we get some feedback what is the problem? Any suggested >> >> workaround? Would it be possible to write our own marshal handlers to >> >> work around this? >> >> >> >> We did some experiments using a plain list of key-value objects which >> >> seems to work, however this breaks the SOAP compatibility with older >> >> stuff so this solution is a headache for us. >> >> >> >> >> >> Kent Närling >> > >> > -- >> > Daniel Kulp >> > dk...@apache.org >> > http://dankulp.com/blog > > -- > Daniel Kulp > dk...@apache.org > http://dankulp.com/blog >