190 likes | 575 Views
Apache Sandesha and Apache Axis2. Jaliya Ekanayake. Agenda. Apache Axis 1.X Current Implementation of Apache Sandesha Apache Axis2. Axis 1.X. Support synchronous Web service invocations Handlers participate for header processing Fixed handler path inside the engine
E N D
Apache Sandesha and Apache Axis2 Jaliya Ekanayake
Agenda • Apache Axis 1.X • Current Implementation of Apache Sandesha • Apache Axis2
Axis 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
WS-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
Client Service CreateSequenceRequest RM Source RM Destination CreateSequenceResponse Web service Request Acknowledgement Retransmissions and Ack Requests TerminateSequence Similar message exchange to send the response back WS-RM Example
Sandesha Architecture Axis Architecture Typical message exchange Architecture of Sandesha on top of Axis
Features 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
Axis2 • 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
Axis2 Architecture Main Components of Axis
SOAP 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
AXIOM- Axis Object Model • Differed building • Pull based parsing with StAX //create the parserXMLStreamReader parser = XMLInputFactory.newInstance() .createXMLStreamReader(new FileReader(file)); //create the builderOMXMLParserWrapper builder = OMXMLBuilderFactory .createStAXSOAPModelBuilder(OMAbstractFactory.getSOAP11Factory(), parser); //get the root element (in this case the envelope)SOAPEnvelope envelope = (SOAPEnvelope) builder.getDocumentElement();
Flows • Flows represents different message paths in Axis2 engine • Collection of handlers in a flow • Global and Operation specific flows Message Flows in Axis2
Handlers, 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
E.g. Logging Module Handlers, 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
Available Invocation Methods One-way messaging Blocking with Single Channel Non-Blocking with Single Channel Blocking with Dual Channel Non –blocking with Dual Channel Client API
Module 1 Module 2 Client Out Handler Client Out Handler Out Flow Context1 Context2 In Flow Client In Handler Client In Handler Proposed Architecture for WS-* in Axis2
References: • 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