Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Excerpt
hiddentrue

A meta guide to your options with CXF


CXF provides you with many options to build services. This guide is meant to give you a quick overview of those options and help you orient yourself quickly with CXF.

Table of Contents

Different Types Of Services

CXF support three major types of services:

  • SOAP - this page summarizes the options for creating SOAP services.
  • REST-ful - REST support is described here.
  • CORBA

JAX-WS Annotated Services from Java

The JAX-WS APIs include a set of annotations which allow you to build services using annotated classes. These services are based on a single class which contains a set of operations.

Here's a simple example:

Code Block
java
java

@WebService
public class Hello {
  public String sayHi(String name) {
    return "Hello " + name;
  }
}

...

Note that CXF generally restricts WSDL support to WSI-BP, not the full WSDL 1.1 specification.

There is also a Simple Frontend that allows you to create services without usage of Java annotations, using XML configuration files instead.

JAX-WS Providers

JAX-WS Providers allow you to create services which work at the message level - as opposed to the operation level as with annotated classes. The have a single operation "invoke" which receives either the message payload (i.e. the SOAP Body) or the whole message itself (i.e. the SOAP Envelope).

Here's a simple example:

Code Block
java
java

@WebServiceProvider
public class HelloProvider {
  public Source invoke(Source request) {
    return ....;
  }
}

...

More Information: Developing a JAX-WS Service

Simple Frontend

Sometimes you don't want to annotate classes or use the JAX-WS APIs. CXF includes a Simple Frontend which allows you to take nearly any class and make a service out of it with absolutely no extra work. This is great for those services which are simple or are quick prototypes.

CXF uses the JAXB databinding as the default, but you can use the Aegis data-binding for even more simplicity. Whereas JAXB forces you to annotate your classes, Aegis works with no annotations at all and also supports a wide variety of data-types out of the box, including things like Maps and Sets.

Services are publish via one of two means:

...

...

Javascript

CXF provides a Javascript module which allows you to build services in Javascript with the Java Rhino library. One advantage of this is that you can use E4X to interact more easily with the XML. For more information see the Javascript JavaScript page.