Developing Web Services with SOAP and Apache Axis2
(4 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.
Apache 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
- Better understanding of Web services security and reliability
- 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
- How to make interactions secure and reliable
- Understanding of 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:
- Four 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 Apache 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 Apache Axis2, and testing it
- Command-line tooling
-
Asynchronous Web Services
- Reply-To
- HTTP 202
- Tracing an asynchronous interaction using HTTPTracer WSDL
- WSDL 1.1 vs WSDL2
- Tools for creating and reading WSDL
- Contract first development
- Lab Exercise * Create a 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
-
Dynamic clients
- Using the ServiceClient API
- Lab Exercise * Calling services using AXIOM and ServiceClient
-
Tooling
- Using Apache Axis2 in Eclipse
- Ant Build scripts
- Using Apache Axis2 in a Unit test environment
- Using the Eclipse plugin
- Creating Unit tests
-
REST
- REST arguments and positioning
- Using XML/HTTP in a POST
- The WSDL2.0 GET binding
- Using Apache 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
- Using ServiceGroups and Axis2 context structure
- EPR sessions vs HTTP Sessions
- Create a stateful service
-
More internals of Apache Axis2
- Modules, phases, handlers
- ClassLoader Hierarchy
- Description and Context hierarchies
- Building and testing a simple Logging Module
-
Advanced Web Services
- Overview of the full WS-platform
-
Introduction to WS Security
- Authentication
- Signature
- Encryption
- Efficiency of WSS vs HTTPS
- Mixing HTTPS and WSS
- Securing a Web Service with WSS4J Tracing flows
-
Introduction to WS Reliable Messaging
- Simple flows
- Reliable WS with Apache Sandesha2
- Tracing flows
-
Introduction to WS-Policy and MetadataExchange
- Why Policy?
- Policy overview and Policy Assertion Languages
- How Policy fits into Axis2
- Policy driven RM client
-
Wrap up talk
- Tradeoffs / Best Practices
- Interoperability issues
- Production deployment issues / tips
- Futures

