Hi

You are welcome to submit a patch to fix camel-soap. That component
could use some love. Not everybody really loves SOAP / XML, and think
its cool to improve/fix it in their spare time.

As said many times we love contribtutions
http://camel.apache.org/contributing.html


On Thu, Sep 26, 2013 at 4:36 PM, Ziemer, Tom <tom.zie...@wirecard.com> wrote:
> Hi,
>
> I was able to trace the problem to 
> org.apache.camel.dataformat.soap.name.TypeNameStrategy, which is responsible 
> to find the namespace for a given type.
>
> In my case, I had an XJC-generated class that did have an (almost empty) 
> @XmlType and an @XmlRootElement with name and namespace.
>
> The problem was that TypeNameStrategy took the name from the @XmlRootElement 
> and the namespace from @XmlSchema in package-info (generated by xjc). 
> Unfortunately package-info did not contain the correct namespace and that's 
> why an invalid request was assembled.
>
> I am not sure whether TypeNameStrategy is working correctly but I was able to 
> solve my Problem with a custom ElementNameStrategy.
>
> Regards,
> Tom
>
> -----Original Message-----
> Hi,
>
> I have an existing web-service-client (spring-ws+JAXB) that I want to replace 
> with camel. The XSD needed for this WS uses different namespaces for 
> request/response and fault. While trying to migrate to camel/camel-soap, I 
> encountered the following problem:
>
> Request/Response NS: "foo"
> Fault NS: "bar"
>
> Route:
> public void configure() throws Exception {
>         SoapJaxbDataFormat soap = new 
> SoapJaxbDataFormat(Request.class.getPackage().getName());
> //        soap.setVersion("1.2");
> //        JaxbDataFormat soap = new 
> JaxbDataFormat(Request.class.getPackage().getName());
>         from("direct:someService")
>             .marshal(soap)
>             .setHeader(SOAP_ACTION, constant("baz"))
>             .setHeader(Exchange.CONTENT_TYPE, 
> constant(ContentType.create("text/xml", Consts.UTF_8).toString()))
>             .to(wsUrl)
>             .unmarshal(soap)
> }
>
> If using the SoapJaxbDataFormat, the resulting xml looks like:
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ns2:Envelope 
> xmlns:ns2="http://www.w3.org/2003/05/soap-envelope"; xmlns:ns3="foo">
>     <ns2:Body>
>         <ns4:request xmlns:ns4="bar">
> ...
> Which is incorrect, since the NS for request must be "foo". The XJC-generated 
> request-class I am using contains an @XmlRootElement annotation with the 
> correct NS.
>
> Out of curiosity, I tried JaxbDataFormat for marshalling, the result is 
> correct and I receive:
> <ns2:request xmlns:ns2="foo">
>
> Environment:
> OS: Windows 7 / 64bit
> Camel-Version: 2.12.1
> JDK6
>
> Any help is appreciated.
>
> Regards,
> Tom
>
>
>



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cib...@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Reply via email to