Hands-on Web Services Training

Our web services training options cover everything from the origins and background of XML message exchange to the latest developments in the ever-growing constellation of WS-* add-on technologies for SOAP. The outline below gives some highlights of the basic course materials, but that's just a starting point.

Training normally focuses on using one of the three dominant Java open source web services stacks – Apache Axis2, Apache CXF, or Sun/Oracle Metro. Each stack offers different options for data binding technologies and extensions to core web services, and the class materials reflect these differences. See the column on the right for details of the training options specific to each stack.

Most enterprise uses of web services require security, so customized training courses often include the full Web Services Security material, rather than the abbreviated version shown in the outline.

Depending on the web services stack(s) chosen for the training, and the extent of coverage of WS-Security and other advanced features, the course takes 3-5 days. In-class assignments are normally supplied with both Apache Ant build files and Eclipse project files, and Eclipse is used for coding demonstrations. Apache Tomcat is normally used for service deployment. Optimum class size is 6-12 developers, though somewhat larger numbers can be accommodated with pair programming.

Course Objectives

  • Understand how web services exchange XML messages
  • Learn to work with XML Schema definitions and WSDL service definitions
  • Learn to develop web services on your preferred web service software stack
  • Understand and know how to apply the principles of web services security
  • Get practical experience in applying all this to real web service projects

Course Prerequisites

  • Intermediate Java programming experience
  • Basic knowledge of XML and HTTP (can be covered in more depth in class if appropriate)

Core Course Outline

Part I - Getting started

  1. Web services in a SOA world
  2. SOAP message exchange
  3. Introduction to XML Schema structures
  4. Introduction to WSDL service definitions
  5. Beyond WSDL - contracts in SOA

Assignments:

  1. Specifying data for exchange
  2. Defining service operations

Part II - Web service basics

  1. Web services stack architecture
  2. Getting started with client-side development
  3. Getting started with server-side development
  4. Data binding alternatives (if appropriate)

Assignments:

  1. First client implementation
  2. First service implementation
  3. Alternative data binding implementations

Part III - Deeper into web services

  1. Understanding Fault handling
  2. Monitoring and controlling services
  3. Debugging client and server code
  4. Logging configuration and usage
  5. WS-Addressing purpose and usage

Assignments:

  1. Extending and debugging client/service code
  2. Adding Fault handling to implementation
  3. Using WS-Addressing

Part IV - WSDL-first service specification

  1. WSDL in-depth:
    1. Basic structure and styles
    2. Analyzing WSDL
  2. Schema structure and usage:
    1. Understanding simple datatypes
    2. Building complex datatypes
    3. Schema structuring
  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

Assignments:

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

Part V - Code-first service specification

  1. Stack-dependent tools for code-first
  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. Stack-dependent service creation
  2. Jibx2Wsdl service creation
  3. Customizing Jibx2Wsdl generation
  4. Implementing the service and client

Part VI - 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 VII - Securing web services (basic version - see Web Services Security)

  1. Understanding keys and certificates
  2. SSL for point-to-point security
  3. WS-Security:
    1. Basis in XML encryption and signature
    2. Understanding WS-Policy and WS-SecurityPolicy
    3. Implementing common options
  4. Performance costs of security
  5. Choosing appropriate security

Assignments:

  1. Enabling SSL security
  2. Enabling WS-Security

Part VIII - Advanced stack features

  1. Adding your own message processing
  2. Going beyond synchronous HTTP:
    1. True asynchronous with client listener
    2. Configuring and using JMS transport (if appropriate)
    3. Implementing publish-subscribe patterns
  3. WS-ReliableMessaging:
    1. WS-ReliableMessaging principles
    2. Configuring and using WS-ReliableMessaging
    3. Interaction with WS-Security
  4. Other stack features

Assignments:

  1. Request authorization processing client and server
  2. JMS client implementation (if appropriate)
  3. WS-ReliableMessaging configuration and usage