On 09/12/11 11:10, Jeff Wang wrote:
I have a class with the ID as Long (I like to use null to indicate not
yet stored, as opposed to a magic-number that is defined as the
not-yet-stored number.  However, when JAXB is done serialzing it, the
type comes out as "@xsi.type":"xs:long", which, when ClientProxyImpl
tries to deserialize, comes up with the error
java.lang.IllegalArgumentException: prefix xs is not bound to a
namespace.

Is it a JSON sequence ? The error is side-effect of this xsi type which is probably not needed for this particular case; you'd need to set up a namespace map for JSONProvider if you prefer to keep 'xsi' & 'xs'


There are also problems passing in JSON strings as {"user" : {'id' :
5}} results in com.sun.org.apache.xerces.internal.dom.ElementNSImpl
cannot be cast to java.lang.Long.  However, PathParams and QueryParams
assign properly to types of Long.

How does the method signature look like and where is this exception originating from ?



What are the best ways to address the serialization and
deserialization problem?  I read about setting read and write xsi
boolean values in JSONProvider, How do I do that? (and if I set them
to false, what other affects could it have?

set either 'writeXsiType' to false or 'readXsiType' to false on org.apache.cxf.jaxrs.provider.JSONProvider and register it in jaxrs:providers (on either side, assuming Spring is used) or say WebClient.create("someaddress", Collections.singletonList(provider));

Side-effect is that the consumer won;t be able to populate beans properly if you get subtypes of a given type serialized, but it is not the main JSON area I guess...

Using Jackson is also an option

Cheers, Sergey


thanks
Jeff


--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com

Reply via email to