"Axis2 in Action" is a three-day training course that provides in-depth coverage of the Apache Axis2 web services framework. Material covered includes the basics of Axis2 client and server development using Axis Data Binding (ADB), comparisons with other data binding alternatives (XMLBeans, JiBX, and JAXB), start-from-code and start-from-WSDL service definition, best practices for web service schema design, security using both SSL and Rampart/WS-Security, and advanced details of working with Axis2. Facilitator Dennis Sosnoski is one of the committers for the Apache Axis2 project, and also the primary developer for the JiBX data binding framework and the Jibx2Wsdl WSDL generation tool, so he's able to present unique insights into both the structure and usage of the Axis2 framework and related tools.

This Axis2 training course is a mixture of presentation, demonstration, and hands-on development, and is limited to a maximum of 12 students in order to assure sufficient attention to each student's needs. The outline below lists the most common options, including several advanced features. The course can also be customized to exclude technologies that are not relevant to a company's needs, or to include other technologies (such as added depth of coverage in particular areas).

Part I – Getting started

  1. The changing world of Web services
  2. Axis2 architecture
  3. Getting started with client-side development
  4. Axis2 server configuration and setup
  5. Getting started with server-side development

Assignments:

  1. ADB client for remote service
  2. ADB client and server

Part II – Working with data binding

  1. Monitoring and controlling services
  2. Debugging client and server code
  3. Data binding alternatives:
    1. XMLBeans principles and usage
    2. JAXB principles and usage
    3. JiBX principles and usage
  4. Strengths and weaknesses of alternatives
  5. Fault handling in Axis2

Assignments:

  1. Extending and debugging client/service code
  2. XMLBeans client and server
  3. JAXB client and server
  4. JiBX client and server
  5. Adding Fault handling to ADB assignment

Part III – WSDL-first service specification

  1. Understanding WSDL:
    1. Basic structure and styles
    2. Analyzing WSDL
  2. Schema structure and usage:
    1. Schema for developers
    2. Tools for working with schema
  3. Issues in schema for web services:
    1. Interoperability problem areas
    2. Service evolution issues
    3. Best practices for web service schemas
  4. WSDL-first service development
  5. Issues with WSDL-first approach

Assignments:

  1. Schema construction and document validation
  2. WSDL construction and validation
  3. Developing the service and client

Part IV – Code-first service specification

  1. Java2WSDL usage
  2. Jibx2Wsdl usage:
    1. Operation and features
    2. Customizations structure
    3. Building clean WSDL+schema from code
  3. Issues with code-first approach

Assignments:

  1. Java2WSDL service creation
  2. Jibx2Wsdl service creation
  3. Customizing Jibx2Wsdl generation
  4. Implementing the service and client

Part V – Dealing with performance

  1. SOAP vs. Java RMI performance comparison
  2. Data binding performance impact
  3. Structuring operations and XML for performance
  4. Using attachments for performance
  5. Using GZip or FastInfoset

Assignments:

  1. Restructuring service and XML for performance
  2. Adding attachment support to client and server

Part VI – Securing web services

  1. Understanding keys and certificates
  2. SSL for point-to-point security
  3. WS-Security:
    1. Rampart installation and configuration
    2. Understanding WS-Policy
    3. Implementing common options
  4. Performance costs of security
  5. Choosing appropriate security

Assignments:

  1. Enabling SSL security
  2. Enabling WS-Security

Part VII – Advanced features

  1. Axis2 handlers and modules
  2. Going beyond synchronous HTTP:
    1. True asynchronous with client listener
    2. Configuring and using JMS transport
    3. Implementing publish-subscribe patterns
  3. WS-ReliableMessaging with Sandesha2
  4. Server clustering support

Assignments:

  1. Request authorization module client and server
  2. JMS client implementation
  3. Sandesha2 configuration and usage