Hi Fitzgerald, the Soap Dataformat only works if you generate code for the wsdl. Internally the dataformat analyzes the generated classes and does the mapping to soap using these.
Honestly I don´t understand how this should work without the generated classes. Do you still want to call the route with a java object like before? If yes how should camel know how to serialize it? If you want to use xml instead you do not need the soap dataformat. Instead you can simply use a http endpoint. Best Regards Christian Christian Schneider Informationsverarbeitung Business Solutions Handel und Dispatching Tel : +49-(0)721-63-15482 EnBW Systeme Infrastruktur Support GmbH Sitz der Gesellschaft: Karlsruhe Handelsregister: Amtsgericht Mannheim HRB 108550 Vorsitzender des Aufsichtsrats: Dr. Bernhard Beck Geschäftsführer: Jochen Adenau, Hans-Günther Meier -----Ursprüngliche Nachricht----- Von: fitzgerald [mailto:[email protected]] Gesendet: Mittwoch, 20. Oktober 2010 15:16 An: [email protected] Betreff: Calling Soapservices using SoapDataFormat Hallo The intention of our developing issue was to call, a soap webservice from camel via the producertemplate. As base of our researching we used this site. http://camel.apache.org/soap.html http://camel.apache.org/soap.html Proxy code generation with wsdl to code generators, should not be used, instead a kind of codeless proxy which we thougt is provided by camel and was done in the following way by setting the endpoint wsdlurd,portname and servicename Like in the sample contained in the link we used SoapJaxbDataFormat SoapJaxbDataFormat soapDF = new SoapJaxbDataFormat("com.siemens.zcsisuint"); soapDF.setElementNameStrategy(new ServiceInterfaceStrategy(xx.class) The producertemplate sends data in following way prodtemp.sendBody("direct:start",ExchangePattern.InOut, xxmessagepojo); So far it works fine. But then in the next iteration we tried to become to live without the proxyclasses and changed the soapdataformatbinding to (to be able to get away from the proxyclasses) QName elementName = new QName("http://www.example.com/ZCSISUINT/", "NewOperation"); QNameStrategy strategy = new QNameStrategy(elementName); SoapJaxbDataFormat soapDF = new SoapJaxbDataFormat(); soapDF.setElementNameStrategy(strategy); The result is marshalling doesn't work anymore.A bulk of exceptions is thrown. The important one seems to be Caused by: javax.xml.bind.JAXBException: org.xmlsoap.schemas.soap.envelope.Envelope is not known to this context. I think it isn't possible to marshal data from a producer to a external soapwebservice without generated proxy classes (only using a wsdl file, without proxy code)! Is that right ? Cheers Fitzgerald -- View this message in context: http://camel.465427.n5.nabble.com/Calling-Soapservices-using-SoapDataFormat-tp3228535p3228535.html Sent from the Camel - Users mailing list archive at Nabble.com.
