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