Ok, found the root of the problem, still don't know how to properly 'fix'
it though. The generated code for the package-info.java for the request
that doesn't work has:

@javax.xml.bind.annotation.XmlSchema(namespace = "http://admin.sample.com/";)

The one that works has:

@javax.xml.bind.annotation.XmlSchema(namespace = "http://users.sample.com/";,
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)

https://java.net/jira/browse/JAXB-818 and few other mentions of things
similar, but no description of this exact situation (most of them refer to
customizing the prefix, I just want it to show up!)

My ugly 'fix' would be to manually create the package-info classes and to
not generate them. Not really nice, but it will work. :(

On Thu, Oct 9, 2014 at 10:46 AM, Nick Stuart <n...@portlandwebworks.com>
wrote:

> Hi all, we have had some recurring issues sending messages through the CXF
> client and being unable to unmarshal them correctly on the backend.
>
> Quick environment setup: Camel 2.13.1 exposes CXF Endpoints (2.7.11) on
> Glassfish 4.1 (and 4.0) running on either jdk 7 or 8.
>
> The client sending the request is CXF 2.7.11 as well, wired up with
> spring. Most of our messages work fine, however we sometimes have issues
> with null pointer exceptions on the backend for some (seemingly) random
> messages.
>
> Here are two sample messages. The top one does not work, the bottom one
> does
>
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
> <soap:Body>
> <ns2:allUsers xmlns:ns2="http://admin.sample.com/";>
> <arg0>
> <sortColumn>email</sortColumn>
> <sortOrder>ASC</sortOrder>
> <sample>
> <locked>false</locked>
> <companyAdmin>false</companyAdmin>
> </sample>
> <offset>0</offset>
> <limit>25</limit>
> </arg0>
> </ns2:allUsers>
> </soap:Body>
> </soap:Envelope>
>
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
> <soap:Body>
> <ns2:list xmlns:ns2="http://users.sample.com/";>
> <ns2:arg0>
> <sortColumn>email</sortColumn>
> <sortOrder>ASC</sortOrder>
> <sample>
> <firstName>bri</firstName>
> <locked>false</locked>
> <companyAdmin>false</companyAdmin>
> </sample>
> <offset>0</offset>
> <limit>25</limit>
> </ns2:arg0>
> </ns2:list>
> </soap:Body>
> </soap:Envelope>
>
> Both endpoints actually share the same method parameter type on the
> backend (called ListUserRequest) and everything is generated from the same
> set of wsdls.
>
> The difference with the 'broken' one is the <arg0>. It does not have the
> ns2 prefix on it, and when it gets back to the backend it things the
> argument is null. I thought I had found a 'fix' for this, but apparently
> not.
>
> Any insight or thoughts would be greatly appreciated.
> -Nick
>

Reply via email to