Preface
1. Java Web Services Quickstart
What Are Web Services?
What Good Are Web Services?
A First Example
The Service Endpoint Interface and Service Implementation Bean
A Java Application to Publish the Web Service
Testing the Web Service with a Browser
A Perl and a Ruby Requester of the Web Service
The Hidden SOAP
A Java Requester of the Web Service
Wire-Level Tracking of HTTP and SOAP Messages
What’s Clear So Far?
Key Features of the First Code Example
Java’s SOAP API
An Example with Richer Data Types
Publishing the Service and Writing a Client
Multithreading the Endpoint Publisher
What’s Next?
2. All About WSDLs
What Good Is a WSDL?
Generating Client-Support Code from a WSDL
The @WebResult Annotation
WSDL Structure
A Closer Look at WSDL Bindings
Key Features of Document-Style Services
Validating a SOAP Message Against a WSDL’s XML Schema
The Wrapped and Unwrapped Document Styles
Amazon’s E-Commerce Web Service
An E-Commerce Client in Wrapped Style
An E-Commerce Client in Unwrapped Style
Tradeoffs Between the RPC and Document Styles
An Asynchronous E-Commerce Client
The wsgen Utility and JAX-B Artifacts
A JAX-B Example
Marshaling and wsgen Artifacts
An Overview of Java Types and XML Schema Types
Generating a WSDL with the wsgen Utility
WSDL Wrap-Up
Code First Versus Contract First
A Contract-First Example with wsimport
A Code-First, Contract-Aware Approach
Limitations of the WSDL
What’s Next?
3. SOAP Handling
SOAP: Hidden or Not?
SOAP 1.1 and SOAP 1.2
SOAP Messaging Architecture
Programming in the JWS Handler Framework
The RabbitCounter Example
Injecting a Header Block into a SOAP Header
Configuring the Client-Side SOAP Handler
Adding a Handler Programmatically on the Client Side
Generating a Fault from a @WebMethod
Adding a Logical Handler for Client Robustness
Adding a Service-Side SOAP Handler
Summary of the Handler Methods
The RabbitCounter As a SOAP 1.2 Service
The MessageContext and Transport Headers
An Example to Illustrate Transport-Level Access
Web Services and Binary Data
Three Options for SOAP Attachments
Using Base64 Encoding for Binary Data
Using MTOM for Binary Data
What’s Next?
4. RESTful Web Services
What Is REST?
Verbs and Opaque Nouns
From @WebService to @WebServiceProvider
A RESTful Version of the Teams Service
The WebServiceProvider Annotation
Language Transparency and RESTful Services
Summary of the RESTful Features
Implementing the Remaining CRUD Operations
Java API for XML Processing
The Provider and Dispatch Twins
A Provider/Dispatch Example
More on the Dispatch Interface
A Dispatch Client Against a SOAP-based Service
Implementing RESTful Web Services As HttpServlets
The RabbitCounterServlet
Requests for MIME-Typed Responses
Java Clients Against Real-World RESTful Services
The Yahoo! News Service
The Amazon E-Commerce Service: REST Style
The RESTful Tumblr Service
WADLing with Java-Based RESTful Services
JAX-RS: WADLing Through Jersey
The Restlet Framework
What’s Next?
5. Web Services Security
Overview of Web Services Security
Wire-Level Security
HTTPS Basics
Symmetric and Asymmetric Encryption/Decryption
How HTTPS Provides the Three Security Services
The HttpsURLConnection Class
Securing the RabbitCounter Service
Adding User Authentication
HTTP BASIC Authentication
Container-Managed Security for Web Services
Deploying a @WebService Under Tomcat
Securing the @WebService Under Tomcat
Application-Managed Authentication
Container-Managed Authentication and Authorization
Configuring Container-Managed Security Under Tomcat
Using a Digested Password Instead of a Password
A Secured @WebServiceProvider
WS-Security
Securing a @WebService with WS-Security Under Endpoint
The Prompter and the Verifier
The Secured SOAP Envelope
Summary of the WS-Security Example
What’s Next?
6. JAX-WS in Java Application Servers
Overview of a Java Application Server
Deploying @WebServices and @WebServiceProviders
Deploying @WebServiceProviders
Integrating an Interactive Website and a Web Service
A @WebService As an EJB
Implementation As a Stateless Session EJB
The Endpoint URL for an EBJ-Based Service
Database Support Through an @Entity
The Persistence Configuration File
The EJB Deployment Descriptor
Servlet and EJB Implementations of Web Services
Java Web Services and Java Message Service
WS-Security Under GlassFish
Mutual Challenge with Digital Certificates
MCS Under HTTPS
MCS Under WSIT
The Dramatic SOAP Envelopes
Benefits of JAS Deployment
What’s Next?
7. Beyond the Flame Wars
A Very Short History of Web Services
The Service Contract in DCE/RPC
XML-RPC
Standardized SOAP
SOAP-Based Web Services Versus Distributed Objects
SOAP and REST in Harmony
Index