Optimizations to JAX-WS
By sandoz on Feb 15, 2006
Kohsuke writes how he is neck deep in JAX-WS rearchitecturing the JAX-WS RI. He deinfintely is, as are others working on JAX-WS, but they are having no problems holding their heads above water!
There are some good improvements here on architecture and implementation which i think will make it very competetive in terms of performance and features with other Web service stacks.
I have looked at netbeans profiler traces (obtained from using Japex configured for a simple Web service micro-benchmark called WSpex) of the old and new and I could see an immediate improvement in the stack of calls. It was also much easier to identify hotspots where performance can be improved. There is still work to do but early results obtained using Japex indicate we are off to a very promising start.
One area which i have been trying to help out in is the area of efficiently buffering infoset for efficient replay. The XMLStreamBuffer project enables the buffering of infoset produced from stream-based XML APIs (like SAX or StAX) for replay using stream-based XML APIs.
XMLStreamBuffer is being used in JAX-WS to buffer the SOAP header blocks of a SOAP message. Each SOAP header block is marked in the buffer and can be replayed using a XMLStreamReader or easily bound to a JAXB object. This offers an efficient alternative (in terms of memory and processing performance) to buffering the header blocks using DOM.
Another area in JAX-WS where XMLStreamBuffer is currently being used is in the area of processing documents (e.g. WSDL, XSD, etc.) associated with services. Buffers of documents are created and consequently they may be efficiently processed concurrently.
I think this calls for another blog on XMLStreamBuffer explaining features and presenting some examples...