JAXWS 2.1 FCS - Fast and Furious
Phew, what a ride! As usual there has been a few last minutes test failures and re-spinning the build, making sure the Orb is blue in the break area, but finally we are here... JAX-WS 2.1 RI is Final! It was non-stop months of effort by everyone in the JAX-WS team and of course hudson which kept reminding us of any regression we caused before anyone else noticed!
JAX-WS 2.1 RI provides convenient programming model built on JAX-WS 2.1 standard APIs and also provides extensions on which middleware developers can build the solutions to enhance it, such as WSIT, Open JBI component, and Glassfish v2. See Kohsuke's blog on extending JAX-WS 2.1 and Jitu's blog on plugging in the Tube and also many developer productivity features.
It has been well tested with unit tests, SQE tests and all of the Java compatibility tests(TCK) on top of Glassfish v2 M4 and Tomcat 5.5.x using JDK 1.5_06 and JDK 6. Get the JAX-WS 2.1 RI from here or from maven repository and send your feedback to users@jax-ws.dev.java.net or to the JAX-WS Forum and report your issues and feature requests at IssueTracker.
Here is JAX-WS 2.1 RI release announcement:
JAX-WS team is pleased to announce general availability of JAX-WS 2.1 RI. We have put tremendous effort in bringing this where it is! Besides cool features and JAX-WS 2.1 API, two main architectural changes that went in to this release - Performance and Extensibility.JAX-WS 2.1 RI is built on Java standards such as JAX-WS -2.1 (JSR 224), JAXB 2.1 (JSR 222), SAAJ, StAX and whole bunch of related Java standards. Not only that, the Web Services standards and profiles compliance is at the core - from tools to the complete runtime system.
Important thing about JAX-WS 2.1 RI is that it is a complete re-architecture and re-write of JAX-WS 2.0. We did it for two main reasons - to make it high performing and extensible! See the reason we did it and also our 2.0.1 M1 release with these architectural changes and merge of 2.0.1 into 2.1.
JAX-WS 2.1 RI brings in new productivity features and also extension APIs for the middleware developers to enhance JAX-WS 2.1 with their custom extensions, such as WSIT, Open JBI component, and Glassfish v2 .
Key Features
- Reference Implementation (RI) of JAX-WS 2.1. Full JAX-WS 2.1 Specification compliance
- Development Tools
- WSDL to Java generator
- Wsimport comman line tool, ant task and Maven2 plugin
- Java to WSDL generator
- Wsgen command line tool, ant Task and Maven2 plugin
- Integrated with NetBeans 5.5.1
- Standards
- Web Services Addressing 1.0 - Core, SOAP Binding and WSDL Binding
- WS-Addressing - Member Submission
- SOAP 1.1 and 1.2
- REST and XML/HTTP
- WS-I Basic Profile 1.1, Simple SOAP Binding Profile 1.0 and Attachment Profile 1.0
- MTOM
- Extensions (May not be final unless says so)
- Web Services Interoperable Technologies ( WSIT) - enables .NET 3.0 interoperability
- WS-ReliableMessaging
- WS-Policy
- WS-MEX
- WS-Security/WS-Security Policy
- WS-Trust/WS-Secure Conversation
- WS-AT/WS-Tx (Supported only on Glassfish v2)
- SOAP/TCP
- Spring support
- Pluggable Transport
- In-VM transport
- Servlet transport (bundled with the RI)
- JMS transport
- SOAP over TCP transport (part of WSIT)
- FastInfoset (bundled with JAX-WS 2.1 RI)
- JBI Service Engine and Binding Component(part of Glassfish v2)
- HTTP Binding Component, used by Open JBI component
- Data binding - JAXB 2.1.2 RI
- Server Side Asynchrony - AsyncProvider
- Stateful Web Services
- Support for custom WebServiceFeature
- Hosting API
- These APIs can be used by a J2EE application server to integrate JAX-WS 2.1 RI for hosting JAX-WS services
- Endpoint Deployment
- Glassfish v2
- Tightly integrated with Glassfish
- Supports EJB and Web endpoints
- 109 based deployment support for better portability
- JAX-WS RI specific deployment descriptor support
- Sun One Application Server 9.0 ur1
- Light weight HTTP server
- On JDK 1.5 through http.jar distributed with the JAX-WS 2.1 RI bundle
- Bundled with JDK 6
- Any other container that supports Servlet 2.4, such as Tomcat, Jetty, Geronimo, JBoss, Resin, ... You name it!
Performance comparison with Axis2 1.1.1
We ran our benchmark tests against Axis2 1.1.1. Details on this benchmark can be found here.
People usually care about the server-side performance so the benchmark tests measures the performance on the server side. Large numbers of clients were used to invoke the endpoints simultaneously so we measured number of invocations per second. Since invocations per second varies greatly from tests to tests, we normalized the number so that you'll always see Axis2 as '100%'.
On tests like echoVoid where the payload is small, the benchmark tends to reflect the performance of the web service toolkit itself, and there you can see JAX-WS RI 2.1 to be about twice as fast than Axis2. On tests like echoArray where the payload is bigger, the benchmark reflects the data binding performance as well, and here you still see us at least 25% faster.
The types of data included empty message (echoVoid), int, float, String, Date, structures of varying sizes(echoStruct) , arrays of varying sizes (echo Array) and binary data of varying sizes (echoSynthetic).
You can see in the graph below for simple types you are looking at the performance comparison with the least amount of data binding and for larger messages the comparisons show performance with respect to data binding.
As it looks above in the graph JAX-WS 2.1 RI is performing lot better than Axis2 for all different message sizes. In each of the tests invocations per second includes all the server-side network processing/container etc., so achieving overall 2x performance means that the web services stack has to perform more than double.
So get the JAX-WS 2.1 from here or from maven repository and continue providing feedback to users@jax-ws.dev.java.net or to the JAX-WS Forum and report your issues and feature requests at IssueTracker.
- Login or register to post comments
- Printer-friendly version
- vivekp's blog
- 1590 reads





