The history behind CXF is a fascinating study in the evolution of open source development projects in our fast-moving times. The XFire project, originally intended as a Java SOAP framework based on a high performance XML parser, reached version 1.2.6 in May 2007 as an independent project hosted at the Codehaus site. Further development of XFire then moved to the shelter of the Apache Software Foundation, merging with the Celtix project as a standalone Apache project called CXF. Some developers are still using the 1.2.6 version, downloadable from Codehouse.
Celtix was a open source project to develop an enterprise service bus framework (ESB) to promote integration of Java components based on code donated by IONA and initially housed as part of ObjectWeb. ObjectWeb seems to have combined with other open source projects, morphing into a formal consortium known as OW2 at the start of 2007. OW2 is mainly supported by European institutions, it is very active and currently supports almost 40 open source "middleware" component projects.
The Relation of CXF to FUSE
Just as Linux is back by for-profit companies offering support, training and documentation, such as Redhat, CXF was backed by IONA Technologies offering the FUSE Services Framework. IONA was aquired by Progress Software Corporation in 2008. Progress Software is continuing to support the FUSE open source community as the recently created FUSE Forge.
The FUSE Open Source Community packages CXF and several other Apache projects including the "services framework" for SOA based on CXF. For enterprise level support of FUSE packages, Progress adds documentation, training and phone access to experts for commercial interests who might worry about the free-wheeling developer community. Progress also packages support for other Apache open source projects.
Features of CFX
Here are claims made for the CXF framework and, of course, the FUSE equivalent for SOA-style development:
- Separation of Concerns: CXF provides a clean separation between various components of a complete application, allowing a developer great flexibility. For example, see this article on replacing CXF's default Java Message Service transport with a component using the Apache "Camel" toolkit. The Apache ActiveMQ implementation of JMS can alternately be plugged in as CXF transport.
- SOAP support: CXF supports a large number of the SOAP related standards commonly abbreviated as "WS-*," including WSI Basic Profile, WSDL, WS-Addressing, WS-Policy, WS-ReliableMessaging, WS-Security, WS-SecurityPolicy, and WS-SecureConversation.
- Lightweight Alternatives: Many current web service toolkits such as JAX-WS use Java annotations for configuration; CXF also supports simpler versions. As an alternative to defining SOAP services by WSDL document, CSF has "code first" or "POJO" (plain old Java objects) tools.
- REST support: CXF supports REST style services based on JAX-RS (JSR 311) as used in the Jersey and Restlet projects and also simplified versions.
- Spring Framework Support: CXF integrates well with the popular Spring 2.x application development environment.
- XML Support: A variety of tools for parsing and generating XML documents are provided, including support for the Java Architecture for XML Binding (JAXB) which provides for mapping Java classes to XML representation (XML binding.) Other popular XML binding tools supported include Castor and XMLBeans.
- CORBA: The Common Object Request Broker Architecture was one of the earliest (1991) attempts to achieve distributed computing that was independent of computer language and operating system. CXF provides support for the CORBA transmission protocol.
- Sample Code: The CXF distribution contains 40 samples covering a very wide variety of uses. Both server-side and client-side code examples are included. Although the documentation is rather sparse, these samples will let you experiment with many cool techniques.
With support for so many Web services- and SOA-related standards and toolkits, CXF and FUSE are having a big impact on developers. The popular NetBeans and Eclipse IDEs have many examples of CXF support. No doubt future historians of technology will have a great time tracing all of the sprouting, merging and dissolving open source projects created at this dynamic stage of development of the web. To be complete, they will have to include the simultaneous evolving of standards and standardization agencies such as the W3C.
Apache CXF home page
CXF User's Guide
The XFire home page hosted at Codehaus
Home page of the OW2 Consortium
The original proposal for merging XFire and Celtix projects
Summary of Web Services related projects at Apache - not including CXF
Home page for the FUSE packages of Apache open source projects
RESTful Services on CXF user guide