Developing Web Services with SOAP and Apache Axis2
(2 days)

Course Summary:
Apache Axis2 is an implementation of the Simple Object Access Protocol (SOAP) Recommendation from the W3C and is a foundational technology for next generation Web Services.
Axis2 has a modular and flexible message handling pipeline. This course focuses on the details of message handling and provides clear hooks for implementations of associated Web services standards and protocols.
Course Objectives:
- Deep understanding of SOAP, WSDL, WS-Addressing
- Understanding of Service Oriented Architecture (SOA) and how to build one using Axis2 and Java
- How to install and configure Apache Axis2
- How to create and consume Web services
- Ability to generate Services and Clients using command line and IDE tools
- Understanding of Apache Axis2 architecture
- Understanding of all components/features of Axis2: AXIOM, Handlers, Phases, Policy, contexts
- Knowledge of Axis2 Ant tasks and IDE plug-ins
- Ability to do Test Driven Development of Axis2 applications
Duration:
- Two days
Audience:
- This course is suitable for developers with some understanding of Web services technologies and Service Oriented Architecture (SOA)concepts.
Prerequisites:
- To benefit from this Axis2 training, the delegates should have a proficiency in Java and XML, as well as a basic knowledge of: SOAP, WSDL, Web services, and SOA.
Program:
- Introduction, course outline, objectives
-
Recap on SOA and SOAP
- SOA aims
- Loose coupling
- SOAP 1.1, SOAP 1.2
- Examples of SOAP messages
- Use a web-based tool to send and receive SOAP messages
-
Introduction to Apache Axis2
- Overview
- Aims
- Top level components and flows
- Demonstration
- Repository
- Install, start-up and test Axis2
- Explore repository, services, modules, axis2.xml
-
Introduction to WS-Addressing
- Why WS-A?
- Asynchronous model
- Endpoint References
- Reference Parameters
-
Creating services with Apache Axis2
- Deploying Java components
- XML-based services vs. Bound services
- Creating a service with Axis2, testing it
- Command-line tooling
-
Asynchronous Web Services
- Reply-To
- HTTP 202
- Tracing an asynchronous interaction using HTTPTracer (TCP Monitor) WSDL
- Building a Web service contract first
- Creating Stubs and Skeletons
- Building an end-to-end service from WSDL
-
Axis Data Binding
- Intro to ADB
- ADB options
- XSD2Java
- Alternatives to ABD * using XMLBeans
- Exploring ADB
- Using XSD2Java
- Single class versus multi-class mapping
-
AXIOM
- Looking at AXIOM and STaX
- Detailed examples
- Building XML structures dynamically
- Creating and parsing XML using AXIOM
-
Client API
- Using the ServiceClient API
- Lab Exercise * Calling services using AXIOM and ServiceClient
-
Tooling
- Using Axis2 in Eclipse
- Ant Build scripts
- Using Axis2 in a Unit test environment
- Using the Eclipse plugin
- Creating Unit tests
-
Advanced topics
-
REST
- REST arguments and positioning
- Using Axis2 with GET and POST
-
MTOM - building and using binary attachments with Apache Axis2
- Build a binary service.
- Trace with/without optimisation.
- Calculate the size of attachment to optimise
-
Understanding Sessions with Apache Axis2
- Types of session and their scopes
- Create a stateful service
-
More internals of Apache Axis2
- Modules, phases, handlers
- ClassLoader Hierarchy
- Description and Context hierarchies
-
REST
-
Wrap up talk
- Tradeoffs / Best Practices
- Interoperability issues
- Production deployment issues / tips
- Futures

