XFire

Home
Bug/Issue Reporting
Download
FAQ
Get Involved
License
News
Performance
Stack Comparison
Support
Who uses XFire\?
XFire Team

Documentation

Javadocs
Reports
User's Guide
Release Notes

Quicklinks

Aegis Binding
Client
JAXB 2.0
JSR 181 Annotations
Spring

Developers

Developer Space
CVS
Building
Architecture
Interesting Projects
Roadmap
Release Process
JAX\-WS

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.