Title: Apache Sandesha and Apache Axis2
1Apache Sandesha and Apache Axis2
2Agenda
- Apache Axis 1.X
- Current Implementation of Apache Sandesha
- Apache Axis2
3Axis 1.X
- Support synchronous Web service invocations
- Handlers participate for header processing
- Fixed handler path inside the engine
- Engine does not support pausing the message
context - Engine does not support addressing
Client Side
Server Side
4WS-RelibaleMessaging
- Based on two endpoint managers
- Endpoint managers provide a transparent message
path - Client should have an addressable endpoint
- Web service request and the response (if any) is
handled in two different sequences - Delivery Assurance (INORDER etc..)
Reliable Messaging Model
5WS-RM Example
6Sandesha Architecture
Axis Architecture
Typical message exchange
Architecture of Sandesha on top of Axis
7Features and Problems
- WS-RelibaleMessaging is fully implemented
- Interoperable with IBM, Microsoft and Systinet
- Difficult to integrate with WS-SecureConvercation
and other WS- that require asynchronous
behaviors
8Axis2
- Engine based on one-way messaging
- AXIOM Based on StAX
- Modules and Handlers
- Message Receivers
- Synchronous and Asynchronous Messaging support
- MEP Support
- WS-Addressing
- MTOM/SWA
- Hot deployment
9Axis2 Architecture
Main Components of Axis
10SOAP Processing Model
SOAP Processing model of Axis2
- Based on one-way engine.
- engine.send()
- engine.receive()
- Flexible Handler Chains
- Flows
- Modules
- Ordering of handlers using phases
- MessageReceivers
- MEP Support
- Capability to Pause Messages
11AXIOM- Axis Object Model
- Differed building
- Pull based parsing with StAX
//create the parserXMLStreamReader parser
XMLInputFactory.newInstance() .createXMLStreamRea
der(new FileReader(file)) //create the
builderOMXMLParserWrapper builder
OMXMLBuilderFactory .createStAXSOAPModelBuilder(O
MAbstractFactory.getSOAP11Factory(), parser)
//get the root element (in this case the
envelope)SOAPEnvelope envelope (SOAPEnvelope)
builder.getDocumentElement()
12Flows
- Flows represents different message paths in Axis2
engine - Collection of handlers in a flow
- Global and Operation specific flows
Message Flows in Axis2
13Handlers, Phases and Modules
- Handler
- Same concept as in Axis1.X
- Phases
- Mechanism to arrange handlers.
- System defined phases
- E.g. TransportIn, PreDispatch, Dispatch,
PostDispatch - User Defined Phases
- Logging, Security, RM
- Module
- Collection of handlers
- May be in different phases
- axis2.xml
14Handlers, Phases and Modules contd..
public class LoggingModule implements Module
// initialize the module public void
init(AxisConfiguration axisSystem) throws
AxisFault // shutdown the module public
void shutdown(AxisConfiguration axisSystem)
throws AxisFault
LoggingModule.java
module.xml
15Client API
- Available Invocation Methods
- One-way messaging
- Blocking with Single Channel
- Non-Blocking with Single Channel
- Blocking with Dual Channel
- Non blocking with Dual Channel
16Proposed Architecture for WS- in Axis2
17Questions?
18References
- http//ws.apache.org/axis/java/architecture-guide.
html - http//ws.apache.org/axis/java/architecture-guide.
html - http//schemas.xmlsoap.org/ws/2005/02/rm/
- http//ws.apache.org/axis2/Axis2ArchitectureGuide.
html - http//ws.apache.org/axis2/mtom-guide.html
- http//ws.apache.org/axis2/OMTutorial.html
19Thank You!