XFire

Home
Bug/Issue Reporting
Download
FAQ
Get Involved
License
News
Stack Comparison
Support
User's Guide
XFire Team

M5

Javadocs
Reports

M6-SNAPSHOT

Javadocs
Reports

Developers

Developer Space
CVS
Building
Architecture
Interesting Projects
Release Process

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.