ActiveSOAP is essentially a small, lightweight XML router using the StAX pull parser API.
When an XML request is processed, the QName of the root element is extracted and then passed on to some Handler object for processing.
In the case of the SOAP protocols we have a SoapHandler which is capable of implementing the SOAP 1.1 or 1.2 protocols. This SOAP handler will then use the HandlerRegistry to find the handlers available for each SOAP header and then use the registry again to process each body element.
You can register an arbitrary handler against a QName or just provide a default body processing handler.
Support for REST and multiple SOAP protocols
This architecture allows us to support multiple different versions of SOAP concurrently as well as supporting pure REST based services.
Indeed we can support pure REST services both with and without the SOAP protocol at the same time, allowing you to use the SOAP protocol and other WS-protocols where they make sense for certain clients - or stick to pure XML REST services where the SOAP overhead is not worth the cost.