Ugh please no :-D I'd recommend taking a look at the JAX-WS provider/dispatch mechanisms. You can send a Source object via the Dispatch (and it will wrap it with a SOAP body if necessary or handle whatever binding stuff needs to happen). On the server side you can then receive the XML via a Provider. Once again you'll get a Source object which should be easy enough to work with.
I believe there are some ok samples here: http://java.sun.com/mailers/techtips/enterprise/2006/TechTips_July06.html - Dan On 6/5/07, Dan Connelly <[EMAIL PROTECTED]> wrote:
The most straight-forward (but moderately inefficient) way to process XML messages within SOAP is to have a service method that merely exchanges Request-Response XMLs (Strings byte[ ]s),. like so in the service Interface: public interface String getResponse(String myRequestAsXml) ; Implement the service in XSL transforms. For real-life XML "eFile" messaging service see : http://www.streamlinedsalestax.org/EFileService-1.0.1.wsdl Shaw, Richard A wrote: > I'm not sure if we are talking at cross purposes here. So I'll give an example - > > My logical message is - > > <AddNumbers> > <First>10</First> > <Second>20</Second> > </AddNumbers> > > I want to call a Dispatch and pass in the XML as above. > > If I set the binding in my wsdl file to be pure XML, I expect to see the XML above passed over the transport. > > If I changed the binding to SOAP, I would expect it to look like - > > <SOAP-ENV:Envelope> > <SOAP-ENV:Body> > <AddNumbers> > <First>10</First> > <Second>20</Second> > </AddNumbers> > </SOAP-ENV:Body> > </SOAP-ENV:Envelope> > > If I changed the binding to be Corba it would be in a binary coded format > > (not shown) > > My understanding of the interceptor chain is as follows (and maybe I have this wrong, which is where my mis-understanding lies) - > > Client side > =========== > A - I call a function of my port using java objects > B - It gets converted into XML (JAXB) > C - XML goes through binding layer to format the message > D - The transport sends the formatted message > > Server Side > =========== > E - Transport receives the message > F - binding layer decodes message into XML logical message > G - XML is converted into java objects (JAXB) > H - I have my message as a java object > > I want this process to start at C and end after F so that I pass a logical XML message and receive my reply as a logical XML message even though the binding/transport may not have used XML for the communication. I'm doing this at the moment by adding my own JAXB calls before A and after H. > > Richard Shaw > > ¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø¤º°`°º¤ø,¸¸,ø¤ > > Richard Shaw > Technical Design Authority - Information Solutions Consultancy > Intelligent Transport Systems > > Atkins Highways and Transportation > Woodcote Grove, Ashley Road, Epsom, Surrey, KT18 5BW > > Tel: +44 (0) 1372 756407 > Fax: +44 (0) 1372 740055 > Mob: 07740 817586 > E-mail: [EMAIL PROTECTED] > > www.atkinsglobal.com/its > > -----Original Message----- > From: Freeman Fang [mailto:[EMAIL PROTECTED] > Sent: 05 June 2007 11:23 > To: [email protected] > Subject: Re: Skipping some layers in the interceptor chain > > Hi Richard, > Comment inline > Shaw, Richard A wrote: > >> If I use the dispatch interface does CXF still pass it through the binding and transport layers ? >> >> > It only skip mashall/unmashall for binding layer, but can not skip the transport layer, anyway, you need deliver message to remote process > >> The XML in the sample is a soap message which would suggest to me that it isn't using the binding because that would normally convert the XML into SOAP. >> >> My use case requires me to talk to various legacy services using more than SOAP. >> >> >> > SOAP payload is not compulsory here, you can use any payload you like. > > Thanks very much > > Freeman > > > >> Richard Shaw >> >> ¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø¤º°`°º¤ø,¸¸,ø¤ >> >> Richard Shaw >> Technical Design Authority - Information Solutions Consultancy >> Intelligent Transport Systems >> >> Atkins Highways and Transportation >> Woodcote Grove, Ashley Road, Epsom, Surrey, KT18 5BW >> >> Tel: +44 (0) 1372 756407 >> Fax: +44 (0) 1372 740055 >> Mob: 07740 817586 >> E-mail: [EMAIL PROTECTED] >> >> www.atkinsglobal.com/its >> >> -----Original Message----- >> From: Liu, Jervis [mailto:[EMAIL PROTECTED] >> Sent: 04 June 2007 03:20 >> To: [email protected] >> Subject: RE: Skipping some layers in the interceptor chain >> >> Hi Richard, >> >> Can't you use Dispatch interface? Sth like below shall allow you to >> skip unnecessary JAXB marshalling ( code snippet from CXF >> dispatch_provider sample) >> >> QName serviceName3 = new QName(" http://apache.org/hello_world_soap_http", "SOAPService3"); >> QName portName3 = new >> QName("http://apache.org/hello_world_soap_http", "SoapPort3"); >> >> SOAPService3 service3 = new SOAPService3(wsdlURL, serviceName3); >> DOMSource domReqPayload = new DOMSource(..................); >> Dispatch<DOMSource> dispDOMSrcPayload = service3.createDispatch (portName3, >> >> DOMSource.class, Mode.PAYLOAD); >> >> DOMSource domRespPayload = dispDOMSrcPayload.invoke (domReqPayload); >> >> >> Cheers, >> Jervis >> >> >> >> >>> -----Original Message----- >>> From: Shaw, Richard A [mailto:[EMAIL PROTECTED] >>> Sent: 2007?6?1? 23:33 >>> To: [email protected] >>> Subject: Skipping some layers in the interceptor chain >>> >>> >>> I have the following requirement and was wondering whether anybody >>> could tell me if it is possible - >>> >>> 1 - I have an XML string which represents the logical message for a >>> request >>> 2 - I want to use this to make a request on an appropriate service >>> 3 - I want to catch the reply at the XML level without creating a >>> java object >>> 4 - transform the reply using a XSL stylesheet to be the logical >>> message of another service >>> 5 - send the logical message to the final service >>> >>> This is for a generic data fetch. It requests data from a SOA >>> component, transforms the data into a set message, which is sent to >>> my datastore component. I don't want to write a new component for >>> every type of data source that I want to fetch data from. >>> >>> I have implemented the above using the original Celtix code, but it >>> has the following inefficiencies - >>> >>> 1 - I load the XML from my config. unmarshal it into an object and >>> then use that to call my service which will marshal as its first step >>> 3 - the response is unmarshalled into a java object so I then marshal >>> it back to an XML stream to pass to the XSLT transformer >>> 5 - I unmarshal the transformed XML into a java object and use that >>> to call my data storage service >>> >>> Thanks >>> >>> Richard Shaw >>> >>> ¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø¤º°`°º¤ >>> ø,¸¸,ø¤ >>> >>> Richard Shaw >>> Technical Design Authority - Information Solutions Consultancy >>> Intelligent Transport Systems >>> >>> Atkins Highways and Transportation >>> Woodcote Grove, Ashley Road, Epsom, Surrey, KT18 5BW >>> >>> Tel: +44 (0) 1372 756407 >>> Fax: +44 (0) 1372 740055 >>> Mob: 07740 817586 >>> E-mail: [EMAIL PROTECTED] >>> >>> www.atkinsglobal.com/its >>> >>> >>> >>> This email and any attached files are confidential and copyright >>> protected. If you are not the addressee, any dissemination of this >>> communication is strictly prohibited. >>> Unless otherwise expressly agreed in writing, nothing stated in this >>> communication shall be legally binding. >>> >>> The ultimate parent company of the Atkins Group is WS Atkins plc. >>> Registered in England No. 1885586. Registered Office Woodcote Grove, >>> Ashley Road, Epsom, Surrey KT18 5BW. >>> >>> Consider the environment. Please don't print this e-mail unless you >>> really need to. >>> >>> >>> >> This message has been scanned for viruses by MailControl - (see >> http://bluepages.wsatkins.co.uk/?6875772) >> >> >> > >
-- Dan Diephouse Envoi Solutions http://envoisolutions.com | http://netzooid.com/blog
