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)
>>
>>
>>
>
>