Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Axis2 Landscape

2,630 views

Published on

The presentation I did in Apachecon 2009 on Axis2 Landscape.

Published in: Technology, Education
  • Be the first to comment

Axis2 Landscape

  1. 1. Axis2 Landscape<br />EranChinthaka<br />School of Informatics and Computing<br />Indiana University<br />
  2. 2. Agenda<br /><ul><li>Pre-Axis2 Era
  3. 3. Axis2 – Diving in to Architecture
  4. 4. How all projects fit together
  5. 5. Q&A</li></li></ul><li>About Me<br /><ul><li>Member, PMC Member and committer in Apache Software Foundation
  6. 6. PhD student in Indiana University, Bloomington, Indiana
  7. 7. Research on using usage patterns and knowledge-based techniques to improve job executions in large-scale systems (grids, clouds, etc)</li></li></ul><li>Apache WS Timeline<br /><ul><li>Apache SOAP
  8. 8. Developed by IBM research team
  9. 9. Donated by IBM shortly after IBM joined the SOAP/WS initiative
  10. 10. Proof of concept
  11. 11. Apache Axis1
  12. 12. SAX based
  13. 13. Handler architecture
  14. 14. Widely used in many products
  15. 15. WSS4J, Sandesha, Kandula, Pubscribe, WSRF support</li></li></ul><li>Why Axis2<br /><ul><li>Changes to Web service landscape mandated an extensible architecture
  16. 16. WS-Addressing , Reliable Messaging, WS-MEX
  17. 17. Performance
  18. 18. Parsers, message processing
  19. 19. Programming Abstractions
  20. 20. Asynchronous invocations, Message Exchange Patterns
  21. 21. Ease of use
  22. 22. Better APIs, Hot Deployment and other capabilities</li></li></ul><li>Axis2 Features<br /><ul><li>High performance XML processing model
  23. 23. Extensible Messaging Engine
  24. 24. Rich Information Model
  25. 25. Pluggable module, data binding, transports architecture
  26. 26. Can support XMLBeans, ADB, JAXB, JiBX, etc.,
  27. 27. Ability to plug-in any WS-* implementation
  28. 28. Easy to use deployment model
  29. 29. Convenient programming abstractions
  30. 30. WSDL 1.1, 2.0 and SOAP 1.1, 1.2 support
  31. 31. WSDL 2.0 HTTP binding, mimicing REST style invocations
  32. 32. Cloud computing support
  33. 33. Auto-scaling on Amazon
  34. 34. Clustering support</li></li></ul><li>Axis2 Landscape<br /><ul><li>Community
  35. 35. Academic Usage
  36. 36. De-facto web services engine in research projects
  37. 37. Eucalyptus[1]
  38. 38. Industry Usage</li></ul>Companies started consulting on Axis2 and/or building products on Axis2<br />De-facto Web service engine for all the interoperability efforts<br />[1]The Eucalyptus Open-source Cloud-computing System, Daniel Nurmi, Rich Wolski, Chris Grzegorczyk, GrazianoObertelli, Sunil Soman, Lamia Youseff, DmitriiZagorodnov, in Proceedings of 9th IEEE International Symposium on Cluster Computing and the Grid, Shanghai, China<br />
  39. 39. Web services – Big Picture<br />
  40. 40. Axis2 – SOAP Processing Model<br />
  41. 41. Axis2 Engine<br />Axis2 - Components<br />Tools<br />WSDL CodeGeneration<br />Handlers<br />Transports<br />Information Model<br />Deployment Model<br />XML Model<br />
  42. 42. XML Model<br /><ul><li>AXIOM (AXIs Object Model)
  43. 43. API is more like simplified DOM
  44. 44. Fundamental Difference
  45. 45. Data read and objects created on-demand using pull parsers
  46. 46. Allows direct access to the underlying pull stream with or without building the tree
  47. 47. Support for storing binary data
  48. 48. API also provides a StAX parser interface at any element
  49. 49. Allows the event based navigation of the OM tree.</li></li></ul><li>Build object model to here<br />h = envelope.getHeader(securityQName)<br />...and then you can do<br />body = envelope.getBody();<br />reader = body.getXMLStreamReader();<br />while (reader.hasNext()) {<br /> ...<br />} <br />AXIOM Architecture- Deferred Building<br />&lt;soap:Envelope&gt;<br /> &lt;soap:Header&gt;<br /> &lt;myNS:Securitysoap:mustUnderstand=“true”&gt;<br /> &lt;/myNS:Security&gt;<br /> &lt;/soap:Header&gt;<br /> &lt;soap:Body&gt;<br /> &lt;doSomethingCool&gt;<br /> ... MEGABYTES OF DATA HERE ...<br /> &lt;/doSomethingCool&gt;<br /> &lt;/soap:Body&gt;<br />&lt;/soap:Envelope&gt;<br />
  50. 50. Phases, Modules, Handlers<br />
  51. 51. Extensible Messaging Engine<br />
  52. 52. Message Processing Stages<br /><ul><li>Transport Receivers
  53. 53. Dispatching
  54. 54. AddressingBasedDispatcher
  55. 55. RequestURIBasedDispatcher
  56. 56. SOAPActionBasedDispatcher
  57. 57. SOAPMessageBodyBasedDispatcher
  58. 58. User Handlers
  59. 59. Message Receivers</li></li></ul><li>Dispatching …..<br />POST /axis2/services/EchoXMLService/echoOMElementHTTP/1.1<br />User-Agent: Axis2<br />Host: 127.0.0.1<br />Content-Type: application/soap+xml; charset=UTF-8;action=&quot;EchoOMElement&quot;;<br />.....................<br />&lt;?xml version=&apos;1.0&apos; encoding=&apos;UTF-8&apos;?&gt;<br />&lt;soapenv:Envelopexmlns:soapenv=&quot;http://www.w3.org/2003/05/soap-envelope&quot;<br />xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot;&gt;<br /> &lt;soapenv:Header&gt;<br />&lt;wsa:To&gt;http://127.0.0.1:5556/axis2/services/EchoXMLService/echoOMElement&lt;/wsa:To&gt;<br /> &lt;wsa:ReplyTo&gt;<br /> &lt;wsa:Address&gt;http://www.w3.org/2005/08/addressing/anonymous&lt;/wsa:Address&gt; <br /> &lt;/wsa:ReplyTo&gt;<br /> &lt;wsa:MessageID&gt;urn:uuid:AD147449058471C81E11506120248601&lt;/wsa:MessageID&gt;<br />&lt;wsa:Action&gt;urn:EchoOMElement&lt;/wsa:Action&gt;<br /> &lt;/soapenv:Header&gt;<br /> &lt;soapenv:Body&gt;<br /> &lt;ns1:echoOMElement xmlns:ns1=&quot;http://org.apache.axis2/xsd&quot;&gt;<br /> &lt;ns1:myValue&gt;Isaac Asimov, The Foundation Trilogy&lt;/ns1:myValue&gt;<br /> &lt;/ns1:echoOMElement&gt;<br /> &lt;/soapenv:Body&gt;<br />&lt;/soapenv:Envelope&gt;<br />
  60. 60. Message Receiver<br /><ul><li>The last handler of the execution chain
  61. 61. MEP dependent (MEP ?? )
  62. 62. Does the actual business logic invocation
  63. 63. Ability to write custom Message Receivers
  64. 64. Injects dependencies to services
  65. 65. Default Message Receivers
  66. 66. RawXMLINOnlyMessageReceiver
  67. 67. RawXMLINOutMessageReceiver
  68. 68. RPC*MessageReceiver</li></li></ul><li>Message Exchange Patterns - MEP<br /><ul><li>Describes the exchange pattern of SOAP messages per given operation
  69. 69. In-Out
  70. 70. In only
  71. 71. In optional out</li></li></ul><li>Information Model<br />
  72. 72. Deployment Model<br /><ul><li>Axis 1.x deployment requires you to
  73. 73. modify the XML files or
  74. 74. Call the admin client, add to the classpath, restart the server
  75. 75. Archive based deployment
  76. 76. Bundle all together and drop in
  77. 77. Directory based deployment (similar structure as archive )
  78. 78. Hot Deployment
  79. 79. Archive file can contain
  80. 80. Class files, third party libraries, any other resources required by the service</li></li></ul><li>Deployment Model – Axis2 Service<br /><ul><li>Can be deployed as an archive (.aar) file or as a directory with all necessary resources
  81. 81. Isolated – separate Class loader</li></li></ul><li>Deployment Model – Axis2 Service<br /><ul><li>Service configurations are given by the services.xml
  82. 82. No need to have a WSDL around to be a valid service !!!
  83. 83. Contains
  84. 84. Exposed transports
  85. 85. Service scopes
  86. 86. Action mappings and message receivers
  87. 87. Modules to be engaged</li></li></ul><li>Deployment Model – Axis2 Module<br />&lt;module name=&quot;addressing&quot;&gt;<br /> &lt;Description&gt;&lt;/Description&gt;<br /> &lt;InFlow&gt;<br /> &lt;handler name=&quot;AddressingFinalInHandler&quot; <br /> class=&quot;org.apache.axis2.handlers.addressing.AddressingFinalInHandler&quot;&gt;<br /> &lt;order phase=&quot;PreDispatch&quot;/&gt;<br /> &lt;/handler&gt;<br /> ..............<br /> &lt;/InFlow&gt;<br /> &lt;OutFlow&gt;<br /> &lt;handler name=&quot;AddressingOutHandle”<br /> class=&quot;org.apache.axis2.handlers.addressing.AddressingOutHandler&quot;&gt;<br /> &lt;order phase=&quot;MessageOut&quot;/&gt;<br /> &lt;/handler&gt;<br /> &lt;/OutFlow&gt;<br /> &lt;OutFaultFlow&gt;<br /> .............<br /> &lt;/OutFaultFlow&gt;<br /> &lt;InFaultFlow&gt;<br /> .............<br /> &lt;/InFaultFlow&gt;<br />&lt;/module&gt;<br />
  88. 88. Client Interaction API<br /><ul><li>Supports both blocking and non-blocking invocations models
  89. 89. Concept of callbacks for the client for non- blocking case
  90. 90. handle both transport dependent and transport independent asynchrony
  91. 91. sendRobust
  92. 92. fireAndForget
  93. 93. sendReceive
  94. 94. sendReceiveNonBlocking</li></li></ul><li>Code Generation<br /><ul><li>Generates Java/C and other language stubs from given WSDL files
  95. 95. for invoking a Web service
  96. 96. Stub, callback handler, data bound classes, build file
  97. 97. For authoring a Web service
  98. 98. Skeleton, custom message receiver, services.xml</li></li></ul><li>How WS Projects Fit Together<br /><ul><li>Apache Axis2 Java/C implementations
  99. 99. WS-Commons
  100. 100. Axiom – the XML object model
  101. 101. XmlSchema – Xml schema model used within code generation, WSDL models
  102. 102. Transports
  103. 103. Neethi – WS-Policy implementation
  104. 104. Modules
  105. 105. Sandesha – WS-Reliable Messaging implementation
  106. 106. Rampart, Rahas – WS-Security, WS-Secureconversation, WS-Security Policy, WS-Trust implementations
  107. 107. Savan– WS-Eventing implementation
  108. 108. WS-Addressing
  109. 109. WSS4j – Web services security implementation including XML security
  110. 110. Woden – WSDL 2.0 object model</li></li></ul><li>Resources<br /><ul><li>Latest Information
  111. 111. http://ws.apache.org/axis2
  112. 112. Feedback, bugs, questions
  113. 113. axis-user@ws.apache.org, axis-dev@ws.apache.org</li></li></ul><li>What’s Next?<br /><ul><li>Axis2 in the real world
  114. 114. Axis2 hands on
  115. 115. Axis2 Security</li></li></ul><li>Thank You !!<br /><ul><li>All committers and users who contributed to make Axis2 the best open source Web service engine
  116. 116. Special thanks to DeepalJayasinghe for sharing his slides
  117. 117. Data-to-insight lab for making this talk possible</li></li></ul><li>Questions !!<br />

×