On 22-10-2010 09:49, Steve W. Jackson wrote:
In article<4cc18968$0$15424$c3e8da3$cc4fe22d@news.astraweb.com>,
projectmoon<nospam@nowhere.net> wrote:
On Fri, 22 Oct 2010 02:54:29 -0700, ses wrote:
What's the best approach for dealing with complex types (such as
HashMap<String,String>) with web services? Obviously for full
interoperability the only option would be to convert to a string array -
String[][]
But I tried using a wrapper class around a HashMap<String, String> and
it will build and deploy fine, though when I query the web service using
a tool such as soapUI, I simply get<return/> as the value for what
should contain my hashmap wrapper.
Is there any way I can get the wsgen tool to generate a complex type of
this sort or is it a much better idea to use primitives??
Most web app frameworks will have tools for serializing complex types in
web services. Spring has its own stuff, and there is a (proposed?)
standard called JAX-WS that will also do it. The main thing to watch out
for with complex types is cyclical references, assuming you're using
JSON. JSON cannot handle cyclical references.
JAX-WS is out and has been for a *very* long time now. Much of it is
integrated with JDK 6 as of around update 11 or 14, I forget which. And
it can already handle some of these complex types. In particular, the
cited example of HashMap<String,String> can be done, since it uses only
known types inside. Doing one with a more complex type takes more work,
which is what JAXB is for.
JAX-WS came with 1.6.nothing.
And the default handling of HashMap is not that useful.