JAX-WS Based Web Service Development Using Eclipse

If you are a Java EE developer, you can gain complete mastery over Web Services development in Eclipse WTP and JBoss after taking this course. This course will teach you the theory behind XML schema, WSDL and SOAP. It will proceed to teach you various Java specifications that cover Web Services development.

XML schema design
SOAP
WSDL
JAXB
JAX-WS
JSR 921
UDDI
WS-Security
Interoperability issues
WS-Addressing
WS-ReliableMessaging
WS-Trust and WS-Federation
After completing this course, the student should be able to:

Confidently design XML schema and WSDL.
Tell the difference between different SOAP styles (document literal, RPC literal etc.)
Implement a Web Service using Eclipse WTP and JBoss.
Write a Web Services client using standard Java specifications.
Register a service in a public or private UDDI registry.
Secure web services.
Learn the interoperability issues especially with the .NET platform.

Course Outline

1. Introduction To Eclipse
Overview
The Eclipse Platform
Views, Perspective and Editor Areas
Basic Operations with Eclipse Views and Perspectives
The Java Perspective
The Debug Perspective
WTP
The Tomcat Servlet and JSP Web Container
The JBoss Application Server
Java Primer
XML Primer
Summary

2. Introduction to Web Services
Objectives
A Conceptual Look at Services
Defining Services
Service Communication Analogy
Three Key Service Questions
Connecting the Dots
SOA: Runtime Implementation
What Is a Web Service?
Enterprise Assets as Services
Typical Development Workflow
Advantages of Web Services
Web Service Business Models
Example: Internal System Integration
Example: Business Process Externalization
Binding via SOAP
SOAP in Protocol Stack
SOAP Structure
SOAP Message Architecture
Applying SOAP
Interface via WSDL
WSDL Structure
Applying WSDL
Locating a Service
UDDI Overview
UDDI Terminology
UDDI Structure
Applying UDDI
WS-I Overview
WS-I Deliverables
Summary

3. Basic XML Schemas
What is XML Schema ?
Goals of Schema
Converting DTDs to Schema
Recall: Namespaces
The equivalent schema
Sample instance document
Documents Needed
XML Schema Namespaces
Link Documents to Schemas
Inline element declarations
XSchema Data Types
XSchema Type Definitions
XSchema Simple Data Types
Primitive Data Types
Simple Types
Facet Restrictions on Element Content
Using the Facet
More Samples
Define Simple Element Type
Element Declaration
Element Occurrence Indicators
Complex Type
Attribute Declaration
Attribute Declarations
Occurrence of Attributes
Value Constraints on Attributes
Sequence Element
Element Choices
Express any order
Annotations

4. Schema Configuration Management
Objectives
Evolving Schema
Managing XML Schema
Management Techniques
Internal Techniques
Schema Version Attribute
Adding An Attribute
Namespace Change
File-Based Mechanisms
External
Which To Use?
Summary

5. JAXB
Objectives
Overview of JAXB
Advantages of JAXB
XML Parsing APIs
Validation using Schemas
Java Binding
Using JAXB
Step 1: Binding XML to a Schema
Binding compiler
Interfaces and Classes
Implementing Classes
Step 2: Compiling the files
Step 3: Use the generated files
Unmarshal
To Unmarshal
Retrieving data
Validation
ObjectFactory
Generating XML from JAXB
Step 1: Bind the schema
Step 2: Create the content tree
Step 3: Marshall the content tree
Marshall the content tree
Validation
Updating an XML
Customizing your application
Advantages
Summary

6. JAX-WS Introduction
Objectives
JAX Attack
JAX-WS Origins
JAX-WS Architecture and Tools
Providing a Service
Service Source (Option 1) ...
Service Source (Option 1)
Service-enabling Java
Service Source (Option 2)
Calling a Service
Client Source (Option 1)
Client Source (Option 2) ...
Client Source (Option 2)
Advanced Features
Summary

7. Declarative service configuration with Java 5
Configure Eclipse for Annotations
Start-from-Java
JSR-181 defines eight annotations
Core Annotations
Hello Word Example
@WebService Annotation Parameters
@WebMethod Annotation Parameters
@OneWay Annotation
@WebParm Annotation Parameters
@WebResult Annotation Parameters
More Annotations
@HandlerChain Annotation Parameters
@SoapBinding Annotation Parameters
Advanced Hello Word Example
Adv. Hello Word Example Cont.
WSDL Generated
WSDL Generated Cont.
Summary

8. Web services Description Language (WSDL)
Objectives
WSDL Overview
WSDL Document Tags
WSDL Namespaces
Sample WSDL Document Structure
<definitions>
<import>
<types>
<message>
<portType>
<operation>
One-way <operation>
Request-Response <operation>
Solicit-Response <operation>
Notification <operation>
Modeling Simple Operation
Modeling Complex Operation
Modeling Complex Message
<binding>
More on <binding>
<binding> Syntax
SOAP Binding Example
<service> and <port>
More on <port>
WSDL SOAP Binding Extensions
soap:binding
soap:operation
RPC or Document Style?
WSDL API for Java
Summary

9. Configuration Management
Objectives
SOA Configuration Challenges
Service Versioning
XML Schema Versioning
XML Schema Versioning Guidelines
WSDL Versioning
WSDL Versioning (continued)
Standards Work
Vendor Support
Configuration Management Tips
Configuration Management Gotchas
Summary

10. JAX WS 2.1 Details
Objectives
JAX-WS
JAX-WS Scope
JAX-WS and JAXB
JAX-WS Implementers
WSDL-to-Java Mapping
WSDL Files
<definitions>
<portType>
<types>
<operation>
<operation> parameters
<fault>
Customization Binding
Java-to-WSDL Mapping
The Implementation Class
Package Name
Class Name
Methods and Types
JAXB Usage
Exceptions
Available API
Client API - Service
Service
Using Service
Dispatch
Provider
WebServiceContext
Exception Classes
WebServiceFeature
Annotation Support
JAX-WS Annotations
The Handler Framework
Handler Invocation
Handler Types
Using Handlers
Summary

11. JAX-WS Bindings
Objectives
Blessed be the data that binds
JAXB 2.0 Data Binding
The JAXB Data Binding Process
Java Representation of XML Schema
Default Data Type Bindings
Data Binding Factories
Code-first Services
Schema-first Services
Schema-first Binding
Schema-first Advantages
Customizing JAXB Bindings
JAXB customization concepts
Inline and External Customizations
Passing Customization Files to the JAXB Binding Compiler
Scope, Inheritance, and Precedence
Customization Syntax
Global Bindings Declarations
Schema Binding Declarations
Class Binding Declarations
Property Binding Declarations
<javaType> Binding Declarations
Typesafe Enumeration Binding Declarations
<javadoc> Binding Declarations
Customization Namespace Prefix
Tango - .Net Interoperability
Summary

12. Simple Object Access Protocol (SOAP)
Objectives
SOAP Overview
SOAP in Protocol Stack
SOAP Components
SOAP HTTP Request Example
SOAP HTTP Response Example
Message Envelope
The Header Element
Header Attributes
SOAP Body
SOAP Fault
Communication Style
RPC/Encoded Style
RPC/Literal Style
Enabling RPC Styles
Document/Literal Style
Document/Literal Wrapped Style
Details of the Wrapped Style
Enabling Document Literal Style
Summary

13. JBoss v4 Support for Web Services
Introduction
Service in a Web Container
Example Java Class
Generated Artifacts
JSR 109 Components
Using wstools
Using wstools Server Side
Using wstools Sample config.xml
Web Services Deployment Descriptor
Example: webservices.xml
The Generated WSDL File
The WSDL Editor
Service in a EJB Container
Web Services Deployment Descriptor
Client Development
Using wstools sample config.xml
Generated Artifacts
The Service Reference

14. Web Services Security (WS-Security)
The Challenges
Public Key Infrastructure (PKI)
Digital Signature
Certificates
Overview of Web Services Security
SOAP Message Security
Message Integrity
Message Confidentiality
Symmetric Encryption Example
Authentication Using Identity Token
Authentication
Transport Level Security
Audit Tracking
Identity Assertion Using SAML
SAML SOAP Example

15. WS-Trust and WS-Fedaration
Objectives
Review of WS-Security Authentication Model
How WS-Trust Works
WS-Federation
Federation Metadata Example
Requesting a Token
Dynamic Conversation
Summary

16. Web Services Interoperability (WS-I)
Introduction
Goal
What Comes out of WS-I?
Profiles
Basic Profile 1.1 Highlights
Simple SOAP Binding Profile 1.0 Highlights
Basic Security Profile 1.0
.NET Interoperability

17. Error Handling
Overview
Introduction
Fault
Designing Faults
System Problems
Business Rule Violation
Summary

18. WS-Addressing
Objectives
What is WS-Addressing?
WS-Addressing and Long Running Services
Other Uses of WS-Addressing
WS-Addressing SOAP Header Elements
Example Client SOAP Request
Example Callback SOAP Request
Writing JAX-WS Clients to use WS-Addressing
JAX-WS/WS-Addressing Example
Security and Firewall Issues
Summary

19. WS-ReliableMessaging
Objectives
The Problem with HTTP
Enter WS-ReliableMessaging
When to Use Reliable Messaging?
How Does WS-RM Work?
Importance of Persistence
The Problem With Firewall
How Does WS-MakeConnection Work?
Using WS-MakeConnection
Summary

20. Web Services Handlers
Handlers
Basic Handler Behavior
Basic Steps
JBoss Note
Handler Classes
LogicalHandlers
Protocol Handlers
Sample Handler
Getting Message Details
Inbound and Outbound
Handler Configuration File
Sampler Handler.xml
Specify the Handler Chain
Sample: Using A Handler
Executing
Summary

Appendix A. Best Practices
Overview
Architecture Best Practices
Data Format Best Practices
Security Best Practices
Programming Model Best Practices
Summary

Audience

J2EE developers who will like to learn about how to build a Web Services based solution. This class covers many advanced topics that will help them build a solution appropriate for a large business.