Codehaus XFire

Documentation

Quicklinks

Developers

Sponsors

XFire is a completely stream based system. This means that your soap document is not cached in memory - creating significant performance and memory usage improvements. Working with a stream based soap model can be slightly confusing though for those who are used to DOM based models such as Axis or GLUE.

  • A Channel endpoint receives a message (getEndpoint().receive(...))
  • The Channel creates a HandlerPipeline from the Global Handlers (see XFire) and the Transport Handlers
  • This pipeline is invoked

There are the following phases to an incoming invocation:

  • Transport
  • Pre Dispatch
  • Dispatch
  • Policy
  • User
  • Pre-Invoke
  • Service Invocation

At any time during the pipeline invocation additional Handlers can be added to or removed from phases which are or have not executed yet.

Handlers in any phase may create messages which are sent out to other places. The phases in an outgoing invocation are:

  • Post Invoke
  • User
  • Policy
  • Transport

Faults will be caught by the HandlerPipeline. A fault message is then created using the current MessageExchange and sent out using the MessageExchange Fault channel.

If a message is created which does not have a destination (like a Fault on an in-only message), it will be sent to a Dead Letter channel. Users can register their own dead letter Transports which handle dead messages appropriately.