"Contract first" or "code first?" Spring developers now have a choice with WSO2's release of Web Services Framework (WSF) for Spring 1.0. The new WSF/Spring 1.0 integrates the Apache Axis2 /Java Web services engine into the Spring Framework, giving Spring users full control from within the Spring configuration model.
The existing SpringWebServices (SWS) within Spring supports Web services through the contract-first model, by which users start with XML schema and WSDL definitions of their service. WSF/Spring 1.0 adds code-first support, by which users can start with existing Spring beans and offer them as Web services with a simple Spring configuration.
So how does this compare to Spring Web Services? Well, the first thing is that SWS is mainly about contract-first. And, while contract first is an excellent practice, there are times when it is not appropriate - for example, it may be simply too much effort for a simple first web service. WSF/Spring supports the POJO programming model simply and effectively, and generates the WSDL automatically from the beans you expose. (WSF/Spring does also expose contract-first). The second reason is simply that some users want to use Axis2. Axis2 is a very full featured and interoperable toolkit that does support some extra standards not yet available in SpringWS such as WS-SecureConversation, WS-Trust, WS-Policy and WS-ReliableMessaging. Axis2 also takes a very different approach to enabling these standards using the module approach rather than direct wiring of handlers.
WSF/Spring 1.0 is released under Apache License 2.0 and is based on the open source Apache Axis2/Java Web services engine. Key features include:
- Support for the WS*- stack, including WS-Addressing, WS-Policy WS-Security, WS-SecurityPolicy, WS-ReliableMessaging, WS-Eventing, and SOAP Message Transmission Optimization Mechanism (MTOM).
- Inversion of Control (IOC) container support enabling Spring services to be exposed through an IOC container, as well as support for editing the Axis2 booting configuration through the IOC container.
- Automated WSDL generation via the Axis2/Java code generation tool.
- Querying service support.
- Method exclusion in Spring beans, allowing developers to have fine-grained control over which methods are exposed as Web service operations.
WSF/Spring 1.0 is available for download today, and carries no software licensing or subscription fees. Support is available from the WSO2 site.