Your SlideShare is downloading. ×
  • Like
Axis2 Landscape
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Axis2 Landscape

  • 2,128 views
Published

The presentation I did in Apachecon 2009 on Axis2 Landscape.

The presentation I did in Apachecon 2009 on Axis2 Landscape.

Published in Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,128
On SlideShare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
56
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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