Apache WS Evolution
First generation: Apache SOAP
Second generation: Axis
Third generation: Axis2
Axis2 Architecture
Core Modules
XML Processing Module
*AXIOM (Axis Object Model)
– Based on PULL parser so more control over XML parsing
SOAP Processing Module
* Handlers: intercept and process part of SOAP message
– Three scopes: global, service, operation scope
* Phases: logical collection of one or more handlers
– They’re handler containers
– They also order handlers
* Pipers
– InFlow
~ Last handler is Message Receiver
– OutFlow
Information Processing Module
* Description hierarchy: comes from deployment descriptors
Configuration<>-ServiceGroup<>-Service<>-Operation<>-Message
* Context hierarchy: keeps run-time data
ConfigurationContext<>-ServiceGroupContext<>-ServiceContext<>-OperationContext<>-MessageContext
Deployment Module
* Axis2 supports:
– Hot deployment
– Hot update
* Service extension by modules
A module contains:
– Handlers
– Third party libraries
– Module related resources
– Moduel config file (module.xml)
A module can be deployed as a .mar file
* Axis2 can be deployed as
– Archive file: a .aar file
– POJO deployment
– Custom deployer
Client API Module
* ServiceClient API: used to access SOAP body (payload)
sendRobust(): one way but traps exception
fireAndForget(): one way and don’t care exception
sendReceive(): sunc two way
sendReceiveNonBlocking(): async two way
* OperationClient API: used to modify SOAP header
Create ServiceClient -> Create OperationClient -> Create SOAPEnvelope -> Create MessageContext -> Add SOAPEnvelope to MessageContext -> Add MessageContext to OperationClient -> Invoke OperationClient – (if response) -> Get response MessageContext form OperationClient
Transport Module
Supports:
* HTTP/HTTPS
* TCP: needs WS-Addressing
* SMTP
* JMS
* XMPP
Non Core Modules
Code Generation Module
Data Binding Module
Supports
* ADB (Axiss Data Binding)
* XMLBeans
* JaxMe: included in XMLBeans
* JibX