Java – Which framework is better CXF or Spring-WS?


I am in the process of researching/comparing CXF and Spring-WS for web services? I need to function both as a provider and a consumer of WS. In a nutshell, I have been told that Spring-WS is more configurable, but CXF is easier to get up and running. This question is subjective, but will help direct me in my research.

  • What experience do you have with either of these frameworks?
  • Have you run into any pitfalls with either framework?
  • Have you found any useful features provided by either that is possibly not provided by the other?

Best Solution

About Apache CXF:

  • CXF supports several standards including SOAP, the WSI Basic Profile, WSDL, WS-Addressing, WS-Policy, WS-ReliableMessaging, WS-Security, WS-SecurityPolicy, and WS-SecureConversation.
  • Apache CXF offers both contract-last (starting with Java) and Contract-first (starting with the WSDL) approaches.
  • Apache CXF implements JAX-WS and JAX-RS.

About Spring WS:

  • Spring WS offers "only" contract-first, starting from an XSD Schema.
  • Spring WS supports SOAP, WS-Security, WS-Addressing.

So, at the end, I see Spring WS as a minimal web services framework but consider that it doesn't (in my opinion) have any advantages over Apache CXF (which integrates extremely well with Spring). Between both, I'd pick up Apache CXF.