Skip Ribbon Commands
Skip to main content

J-410 - Developing Java Web Services

Price:

Duration: 3 Days

Audience:

Level:

Technology:

Delivery Method:

Software Assurance Value:

Microsoft CPE:

Course Information

Course Description

​J-410, Deploying Java Web Services introduces the next evolution of Java components: Web Services. It prepares Java programmers to develop Web services and clients according to the Web Services Interoperability (WS-I) Organization's WS-Basic profile, using SOAP 1.1, WSDL 1.1 and XML Schema 1.0. (WS-Basic also calls for UDDI, which has more to do with publishing than development.)

Students get an overview of the interoperable and Java-specific Web services architectures, and then learn the standard APIs for SOAP messaging and WSDL-driven, component-based service development. Both document-style and RPC-style messages and services are covered in depth.
For an overview of all of our Java training, visit the Java Curriculum page. You will find descriptions of different skill levels and Java platforms (J2SE, J2EE) you may encounter as a Java Developer.

Course Objectives

​At the end of this course, the student will be able to:

  • Describe how and why “Web Services” came to be
  • Describe Web Services Architecture
  • Describe the advantages of the Web Services Architecture
  • Describe Web Services Interoperability (WS-I)
  • Use SOAP (Simple Object Access Protocol)
  • Use WSDL (Web Services Definition Language)
  • Use IDL (Interface Definition Language)
  • Build and host a Web Service
  • Generate a simple Web Service Client
  • Use the J2EE Reference Implementation
  • Use the Ant build tool
  • Build Java Web Services
  • Describe the interplay between Web Services and J2EE
  • Use JAXP (Java API for XML Processing)
  • Use JAXB (Java API for XML Binding)
  • Use SAAJ (SOAP with Attachments API for Java
  • Use JAXM (Java API for XML Messaging)
  • Implement a SAAJ/JAXM service
  • Implement a JAX-RPC service (Java API for XML – Remote Procedure Call)
  • Describe the Service Life Cycle
  • Declare and use SOAP Namespaces
  • Build SOAP Headers and Envelopes
  • Generate Web Services from Java code (Java-to-WSDL)
  • Generate Java Web Services from WSDL (WSDL-to-Java)
  • Describe Best Practices for Web Services
  • Use EJBs and JSPs with Web Services
  • Describe security threats and solutions for Web Services

Course Audience

​Experienced XML and Java component developers who need to develop and publish web services applications on the Internet.

Course Outline

Interoperable Web Services

  • A Brief History of IT
  • Motivation for Web Services
  • From HTML to XML to SOAP
  • B2B Example - Supply Chains
  • B2C Example - Rental Housing
  • What is a Web Service?
  • Web Services - Who Needs 'Em?
  • Understanding Web Services
  • HTTP
  • XML
  • Web Services Architecture
  • Interoperability Stacks
  • Stacks and Solutions
  • SOAP
  • The SOAP Envelope
  • Example - A Simple SOAP Message
  • WSDL
  • WSDL Bindings
  • Example - A WSDL Document
  • UDDI
  • The WS-I Basic Profile
  • Support for the WS-I Basic Profile
  • The REST of the Story
  • A SOAPy Mess
  • The REST Architecture
  • What Is a Web Service, Again?

Building and Hosting Web Services

  • Hosting Web Services
  • Web-Service Scenarios
  • Bare-Bones - SOAP Alone
  • Client Generation Using WSDL
  • Both Server and Client from WSDL
  • Publishing and Inquiry Using UDDI
  • The J2EE Reference Implementation
  • The Ant Build Tool
  • Working with AS8
  • Starting and Stopping the Server
  • Development and Administrative Tools
  • The JAXM Reference Implementation
  • Demo - A Running Web Service
  • Demo - See SOAP Run

The Java Web Services Architecture

  • Java and Web Services
  • Advantages of Java for Web Services
  • Web Services and J2EE
  • Web Service Endpoints
  • Java and XML
  • Implementing Web Service Standards
  • Example - The SOAP Sniffer
  • Web Services as J2EE Components
  • The Java API for XML Processing
  • The Java API for XML Binding
  • SOAP with Attachments API for Java
  • The Java API for XML Messaging
  • Implementing a SAAJ/JAXM Service
  • Example - SAAJ/JAXM Math Service
  • The Java API for XML-Based RPC
  • The wscompile Tool
  • Implementing a JAX-RPC Service
  • Example - JAX-RPC Math Service
  • Service Lifecycle
  • SAAJ/JAXM vs. JAX-RPC
  • Strong Typing for Web Services
  • Java-to-WSDL vs. WSDL-to-Java
  • Sessions, Security and Transactions
  • Working with SOAP Headers
  • The Java API for XML Registries

The Simple Object Access Protocol

  • SOAP-Based Web Services
  • Messaging Over the Web
  • The SOAP Messaging Model
  • Declaring and Using Namespaces
  • Multiple Namespaces
  • SOAP Namespaces
  • The SOAP Envelope
  • The Message Header
  • Header Entry Attributes
  • Example - Document Routing
  • The Message Body
  • SOAP Over HTTP
  • SOAP Over SMTP
  • Example - Bidding on an Auction
  • SOAP Over FTP
  • SOAP Faults
  • SOAP Tools
  • The SOAPPad
  • Using SOAPPad
  • Validating SOAP Messages
  • Schema vs. Service Descriptors
  • Demo - A SOAP Message Validator
  • Messaging Styles
  • Data Encoding
  • Service Model vs. Encoding
  • The encodingStyle Attribute
  • The SOAP "Section 5" Encoding
  • Encoding Arrays
  • Avoiding Redundant Serialization
  • Multiple-Reference Values
  • Down-Sides of Multi-Reference Values
  • Attachments

The SOAP With Attachments API for Java

  • SOAP with Attachments API for Java
  • The SOAP Message API
  • The SOAPMessage Class
  • The SOAPPart Class
  • The Name Interface
  • The SOAPEnvelope Interface
  • The SOAPHeader Interface
  • The SOAPBody Interface
  • Node Types
  • The Node Interface
  • The SOAPElement Interface
  • SOAPElement Semantics
  • Parsing by Element Name
  • Example - The SOAPViewer
  • Integration of SAAJ and the DOM
  • Using DOM Methods on SAAJ Trees
  • The Love Is Blind Dating Service
  • The SOAP Fault
  • Creating SAAJ Objects
  • Creating a Message
  • Setting Message Content
  • Managing Namespaces
  • Managing Qualified Names
  • Example - The Math Response

The Java API for XML Messaging

  • Java Messaging APIs
  • The Java API for XML Messaging
  • JAXM and J2EE
  • Point-to-Point Messaging
  • The JAXM Message Provider
  • A JAXM Roundtrip
  • Implementing a SAAJ/JAXM Service
  • JAXM on the Server Side
  • The JAXMServlet Class
  • The ReqRespListener Interface
  • Example - The Math Service
  • Love Is Blind - The User Interface
  • Love Is Blind - The Domain Model
  • Demo - The Web Application
  • JAXM on the Client Side
  • Sending a SOAP Message
  • Example - Invoking the Math Service
  • Applying JAXP Code in Web Services
  • Example - The Lumberyard

Web Services Description Language

  • Component-Based Software
  • Component Models
  • Web Services as Components
  • A World Without Type Information
  • The Need for Service Description
  • An IDL for Web Services
  • Web Services Description Language
  • WSDL Namespaces
  • The WSDL Description Model
  • Example - A WSDL Document
  • WSDL Descriptors as Schema
  • The Schema for WSDL Descriptors
  • Associations Between Components
  • Interface Description
  • Messaging Scenarios
  • Operations: Input, Output, and Fault
  • Messages
  • The Order-Tracking Service
  • Code Generation
  • Service Description
  • Extending WSDL
  • The Binding Component
  • A Structural Pattern
  • The SOAP Binding
  • Example - Binding for Math
  • Document vs. RPC Style
  • Encoded vs. Literal Use
  • The HTTP Binding
  • Demo - Dynamic Invocation
  • Deploying WSDL

The Java API for XML-Based RPC

  • The Java API for XML-Based RPC
  • Two Paths
  • How It Works - Build Time
  • How It Works - Runtime
  • Mapping XML and WSDL to Java
  • Supporting Classes
  • The wscompile Tool
  • Generating from WSDL
  • Demo - Generating from Math WSDL
  • What Gets Generated
  • What the Application Sees
  • Mapping Java to WSDL and XML
  • Generating from Java
  • Demo - The PigLatin Service
  • What Gets Generated
  • Which Way To Go?
  • Web Services for J2EE
  • Deploying JAX-RPC Web Services

Generating Web Services from Java Code

  • The Java-to-WSDL Mapping
  • Literal and Encoded Uses
  • Primitives
  • Standard Classes
  • Value Types
  • JavaBeans Conventions
  • Value Type Example
  • Collections
  • Service Endpoint Interface
  • Scope of Code Generation
  • Inheritance Support
  • Multi-Tier Application Design
  • Analyzing the Domain
  • Analyzing Love Is Blind
  • Deploying the Service
  • Example - Adding a SOAP Interface
  • When Things Don't Fit
  • Service Endpoint Interface Misfits
  • Value Misfits

Generating Java Web Services from WSDL

  • The XML-to-Java Mapping
  • Built-In Simple Types
  • Derived Simple Types
  • Lists
  • Complex Types
  • Generated Value Types
  • Enumerations
  • Example - Love's Not That Blind
  • SOAP Arrays
  • Miscellaneous Types of Types
  • The WSDL-to-Java Mapping
  • Mapping Inputs and Outputs
  • Examples - Inputs and Outputs
  • Single-Output Operations
  • Building a Service Client
  • Scope of Code Generation
  • Service Stubs
  • Locating a Web Service
  • Example - Love Is Blind Client
  • Client-Side Validation
  • Building Services from WSDL
  • Implementing the Service Endpoint
  • Example - JAX-RPC 1.1 Type Support

Best Practices and Techniques

  • Pros and Cons: Java-to-WSDL
  • Pros and Cons: WSDL-to-Java
  • Interoperability
  • WSDL-to-Java Interoperability
  • Controlling Names and URIs
  • Example - The Names Projects
  • Polymorphism
  • Polymorphism for Web Services
  • The Most-Derived, Published Type
  • Example - Polymorphism
  • The Dynamic Invocation Interface
  • Passing Objects
  • Performance Patterns
  • The Web-Service Mediator
  • Extensible Type Mapping
  • Another CORBA?

EJB, JSP and Web Services

  • The Big Picture
  • Enterprise JavaBeans
  • Three Tiers for J2EE
  • EJB 2.1 and JAX-RPC
  • Session Beans as Service Endpoints
  • The Bean's Web Service Interface
  • SOAP as an RMI Transport
  • Example - A Math EJB
  • Example - A Shareware Web Service
  • "Gotchas"
  • JSP and XML
  • The JSP Standard Tag Library
  • JSP, JSTL and SOAP
  • Reading SOAP Using XPath
  • Example - A JSP Web Service
  • Using XSLT
  • JSPs as Web-Service Clients
  • JAXM and SAAJ Custom Tags
  • JSTL, XPath and Namespaces

Service Lifecycle and Message Handlers

  • Web Services as J2EE Components
  • Package Summary
  • The ServletEndpointContext Interface
  • Using JNDI in a JAX-RPC Service
  • SOAP Headers
  • Handling SOAP Headers
  • Servlet Endpoint Context
  • EJB Endpoint Context
  • The Message Context Interfaces
  • Example - Adjusting Measurements
  • JAX-RPC Message Handlers
  • JAX-RPC Handler Interfaces
  • Processing Patterns
  • Handler Chain Interactions
  • Handler Processing Model
  • The Handler Interface
  • AS8 and JAX-RPC Handlers
  • Configuring Handler Chains
  • Session Management
  • Example - Stateful Matchmaking

SOAP Attachments

  • SOAP with Attachments
  • Attachments in J2EE Web Services
  • SAAJ Object Model, Revisited
  • The SOAPMessage Class, Revisited
  • Multipurpose Internet Mail Extensions
  • The Java Activation Framework
  • The DataHandler Class
  • SAAJ MIME Types
  • The MimeHeaders Class
  • Adding Attachments
  • The AttachmentPart Class
  • Identifying Attachments
  • Reading Attachments
  • Example - Images in Love is Blind
  • Attachments in JAX-RPC
  • General MIME Support
  • Specific MIME Types

Security

  • Web Services and Security
  • Threats
  • Techniques
  • Technology
  • Private-Key Encryption
  • Public-Key Encryption
  • Digital Signatures
  • Solution Levels
  • J2EE Solutions
  • Demo - Securing a Service
  • XML and SOAP Solutions
  • XML Encryption and Signature
  • WS-Security
  • Example - A Secure SOAP Message
  • SAML
  • XACML

Appendix A: Learning Resources

Appendix B: W3C and Web-Service Namespaces

  • W3C Namespaces
  • Web-Service Namespaces

Appendix C: Basics of XML and XML Schema (Online Reference)

Course Prerequisites

​Before attending this course, students must have:

  • A working knowledge of XML, through either:
    • I-104, XML Quickstart
      —OR—
    • I-105, XML Quickstart for Programmers
  • A working knowledge of programming in Java, through either:
    • J-330, Enterprise Java Beans
      —OR—
    • J-350, Java2 Enterprise Edition - Accelerated
Course Schedule
This course is not scheduled yet.

Upcoming Training

There is no item in course list.