ws-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Ws Wiki] Trivial Update of "Tuscany/TuscanyJava/Axis2Integration" by edslattery
Date Fri, 12 May 2006 09:20:23 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Ws Wiki" for change notification.

The following page has been changed by edslattery:
http://wiki.apache.org/ws/Tuscany/TuscanyJava/Axis2Integration

New page:
I would like to start the disucssion on AXIS2 integration for Tuscany. 
 
I started to prototype the AXIS2 support for Tuscany web service binding. Following the similar
approach as we do for Axis 1.x, the key enabling factor is the serialization/deserialization
from SDO to AXIOM and vice versa. Generally speaking, it's all about the transformations between
different XML bindings for the same data. Please see the attached the diagram for some examples.
attachment:XMLDataBinding
 
As the default data model for Tuscany, SDO DataObject is used to represent the input/output/fault
message for web services. (Later on, it could be pluggable.)
 
In Axis 1.x, the SOAP envelope is a DOM-based model. 
 
Serialization: SDO --> DOM (SOAP) 
Deserialization: DOM --> SDO
 
Due to some issues of the DOM support in the SDO 1.0 implementation, we made some workarounds
in the current code base. So the real path may look like this:
 
Serialization: SDO --> String --> SOAP
Deserialization: SOAP --> String --> SAX --> SDO
 
In Axis 2, SOAP messages are modeled using AXIOM (AXis Object Model) which is an XML object
model working on StAX (Streaming API for XML) parsing optimized for SOAP 1.1/1.2 Messages.
The ideal path should be:
 
Serialization: SDO --> StAX --> SOAP (AXIOM)
Deserialization: SOAP (AXIOM) --> StAX --> SDO
 
The StAX support is not there yet in the current SDO implementation. So I took a hacky way
and managed to make this path work with the Axis2 0.93 driver for the outbound Web Service
call.
 
Serialization: SDO --> AXIOM (by the special XMLSaveImpl which creates AXIOM attributes/elements/text
in a similar way as DOM)
Deserialization: AXIOM --> StAX --> StAX2SAXAdapter --> SAX --> SDO
 
Now it becomes desirable to have a set of flexible SDO2 serializer/deserializers (or XMLResource
in the SDO/EMF term) as follows:
 
SAX: Generate SAX events from DataObject and load DataObject from SAX events
Stax: Implement StAX XMLStreamReader for a given DataObject and load DataObject from XMLStreamReader
(potentially can support lazy-loading of DataObject?)
DOM: Create DOM tree from DataObject and load DataObject from DOM
 
IMHO, these utilities will not only benifit the SDO/Axis integration, but also the transformation
between SDO and other models like JAXB and XMLBeans.
 
Ideas? Opinions?
 
Thanks,
Raymond
 

Mime
View raw message