RESTful Java with JAX-RS 2.0
Publisher: o'reilly
Published: 2013
Place of publication: Sebastopol, USA
Language: eng
Number of pages: 392
ISBN-13: 9781449361341
Copyright date: 2014
Table of contents: label: Foreword
title: xiii; label: Preface
title: xv; title: Part I. REST and the JAX-RS Standard; label: 1. Introduction to REST
title: 3; label: REST and the Rebirth of HTTP
title: 4; label: RESTful Architectural Principles
title: 5; label: Addressability
title: 6; label: The Uniform, Constrained Interface
title: 7; label: Why Is the Uniform Interface Important?
title: 9; label: Representation-Oriented
title: 10; label: Communicate Statelessly
title: 11; label: HATEOAS
title: 11; label: Wrapping Up
title: 13; label: 2. Designing RESTful Services
title: 15; label: The Object Model
title: 15; label: Model the URIs
title: 16; label: Defining the Data Format
title: 17; label: Read and Update Format
title: 17; label: Create Format
title: 19; label: Assigning HTTP Methods
title: 19; label: Browsing All Orders, Customers, or Products
title: 20; label: Obtaining Individual Orders, Customers, or Products
title: 21; label: Creating an Order, Customer, or Product
title: 21; label: Updating an Order, Customer, or Product
title: 23; label: Removing an Order, Customer, or Product
title: 24; label: Cancelling an Order
title: 24; label: Wrapping Up
title: 26; label: 3. Your First JAX-RS Service
title: 27; label: Developing a JAX-RS RESTful Service
title: 27; label: Customer: The Data Class
title: 28; label: CustomerResource: Our JAX-RS Service
title: 29; label: JAX-RS and Java Interfaces
title: 35; label: Inheritance
title: 37; label: Deploying Our Service
title: 38; label: Writing a Client
title: 40; label: Wrapping Up
title: 42; label: 4. HTTP Method and URI Matching
title: 43; label: Binding HTTP Methods
title: 43; label: HTTP Method Extensions
title: 44; label: @Path
title: 45; label: Binding URIs
title: 45; label: @Path Expressions
title: 46; label: Matrix Parameters
title: 50; label: Subresource Locators
title: 50; label: Full Dynamic Dispatching
title: 52; label: Gotchas in Request Matching
title: 53; label: Wrapping Up
title: 55; label: 5. JAX-RS Injection
title: 57; label: The Basics
title: 57; label: @PathParam
title: 58; label: More Than One Path Parameter
title: 58; label: Scope of Path Parameters
title: 59; label: PathSegment and Matrix Parameters
title: 59; label: Programmatic URI Information
title: 61; label: @MatrixParam
title: 61; label: @QueryParam
title: 62; label: Programmatic Query Parameter Information
title: 63; label: @FormParam
title: 63; label: @HeaderParam
title: 64; label: Raw Headers
title: 64; label: @CookieParam
title: 65; label: @BeanParam
title: 67; label: Common Functionality
title: 68; label: Automatic Java Type Conversion
title: 68; label: @DefaultValue
title: 72; label: @Encoded
title: 72; label: Wrapping Up
title: 73; label: 6. JAX-RS Content Handlers
title: 75; label: Built-in Content Marshalling
title: 75; label: javax.ws.rs.core.StreamingOutput
title: 75; label: java.io.InputStream, java.io.Reader
title: 76; label: java.io.File
title: 78; label: byte[]
title: 79; label: String, char[]
title: 79; label: MultivaluedMap<String, String> and Form Input
title: 80; label: javax.xml.transform.Source
title: 80; label: JAXB
title: 81; label: Intro to JAXB
title: 81; label: JAXB JAX-RS Handlers
title: 84; label: JAXB and JSON
title: 87; label: JSON and JSON Schema
title: 89; label: Custom Marshalling
title: 91; label: MessageBodyWriter
title: 91; label: MessageBodyReader
title: 96; label: Life Cycle and Environment
title: 97; label: Wrapping Up
title: 98; label: 7. Server Responses and Exception Handling
title: 99; label: Default Response Codes
title: 99; label: Successful Responses
title: 100; label: Error Responses
title: 100; label: Complex Responses
title: 101; label: Returning Cookies
title: 104; label: The Status Enum
title: 105; label: javax.ws.rs.core.GenericEntity
title: 106; label: Exception Handling
title: 106; label: javax.ws.rs.WebApplicationException
title: 107; label: Exception Mapping
title: 108; label: Exception Hierarchy
title: 109; label: Wrapping Up
title: 111; label: 8. JAX-RS Client API
title: 113; label: Client Introduction
title: 113; label: Bootstrapping with ClientBuilder
title: 114; label: Client and WebTarget
title: 115; label: Building and Invoking Requests
title: 116; label: Invocation
title: 121; label: Exception Handling
title: 122; label: Configuration Scopes
title: 123; label: Wrapping Up
title: 124; label: 9. HTTP Content Negotiation
title: 125; label: Conneg Explained
title: 125; label: Preference Ordering
title: 126; label: Language Negotiation
title: 127; label: Encoding Negotiation
title: 127; label: JAX-RS and Conneg
title: 128; label: Method Dispatching
title: 128; label: Leveraging Conneg with JAXB
title: 129; label: Complex Negotiation
title: 129; label: Negotiation by URI Patterns
title: 134; label: Leveraging Content Negotiation
title: 135; label: Creating New Media Types
title: 136; label: Flexible Schemas
title: 136; label: Wrapping Up
title: 138; label: 10. HATEOAS
title: 139; label: HATEOAS and Web Services
title: 140; label: Atom Links
title: 140; label: Advantages of Using HATEOAS with Web Services
title: 141; label: Link Headers Versus Atom Links
title: 144; label: HATEOAS and JAX-RS
title: 145; label: Building URIs with UriBuilder
title: 145; label: Relative URIs with UriInfo
title: 148; label: Building Links and Link Headers
title: 152; label: Writing Link Headers
title: 154; label: Embedding Links in XML
title: 154; label: Wrapping Up
title: 155; label: 11. Scaling JAX-RS Applications
title: 157; label: Caching
title: 157; label: HTTP Caching
title: 158; label: Expires Header
title: 158; label: Cache-Control
title: 159; label: Revalidation and Conditional GETs
title: 161; label: Concurrency
title: 164; label: JAX-RS and Conditional Updates
title: 165; label: Wrapping Up
title: 167; label: 12. Filters and Interceptors
title: 169; label: Server-Side Filters
title: 169; label: Server Request Filters
title: 170; label: Server Response Filters
title: 171; label: Reader and Writer Interceptors
title: 172; label: Client-Side Filters
title: 174; label: Deploying Filters and Interceptors
title: 177; label: Ordering Filters and Interceptors
title: 177; label: Per-JAX-RS Method Bindings
title: 179; label: DynamicFeature
title: 179; label: Name Bindings
title: 181; label: DynamicFeature Versus @NameBinding
title: 182; label: Exception Processing
title: 183; label: Wrapping Up
title: 183; label: 13. Asynchronous JAX-RS
title: 185; label: AsyncInvoker Client API
title: 185; label: Using Futures
title: 185; label: Using Callbacks
title: 189; label: Futures Versus Callbacks
title: 191; label: Server Asynchronous Response Processing
title: 191; label: AsyncResponse API
title: 192; label: Exception Handling
title: 194; label: Cancel
title: 195; label: Status Methods
title: 196; label: Timeouts
title: 196; label: Callbacks
title: 197; label: Use Cases for AsyncResponse
title: 197; label: Wrapping Up
title: 201; label: 14. Deployment and Integration
title: 203; label: Deployment
title: 203; label: The Application Class
title: 204; label: Deployment Within a JAX-RS-Aware Container
title: 205; label: Deployment WIthin a JAX-RS-Unaware Container
title: 207; label: Configuration
title: 208; label: Basic Configuration
title: 208; label: EJB Integration
title: 211; label: Spring Integration
title: 212; label: Wrapping Up
title: 214; label: 15. Securing JAX-RS
title: 215; label: Authentication
title: 216; label: Basic Authentication
title: 216; label: Digest Authentication
title: 217; label: Client Certificate Authentication
title: 219; label: Authorization
title: 219; label: Authentication and Authorization in JAX-RS
title: 219; label: Enforcing Encryption
title: 221; label: Authorization Annotations
title: 222; label: Programmatic Security
title: 224; label: Client Security
title: 225; label: Verifying the Server
title: 226; label: OAuth 2.0
title: 226; label: Signing and Encrypting Message Bodies
title: 228; label: Digital Signatures
title: 228; label: Encrypting Representations
title: 232; label: Wrapping Up
title: 233; label: 16. Alternative Java Clients
title: 235; label: java.net.URL
title: 235; label: Caching
title: 237; label: Authentication
title: 237; label: Advantages and Disadvantages
title: 239; label: Apache HttpClient
title: 240; label: Authentication
title: 242; label: Advantages and Disadvantages
title: 244; label: RESTEasy Client Proxies
title: 244; label: Advantages and Disadvantages
title: 245; label: Wrapping Up
title: 245; title: Part II. JAX-RS Workbook; label: 17. Workbook Introduction
title: 249; label: Installing RESTEasy and the Examples
title: 249; label: Example Requirements and Structure
title: 251; label: Code Directory Structure
title: 251; label: Environment Setup
title: 251; label: 18. Examples for Chapter 3
title: 253; label: Build and Run the Example Program
title: 253; label: Deconstruction pom.xml
title: 254; label: Running the Build
title: 259; label: Examining the Source Code
title: 261; label: 19. Examples for Chapter 4
title: 263; label: Example ex04_1: HTTP Method Extension
title: 263; label: Build and Run the Example Program
title: 264; label: The Server Code
title: 264; label: The Client Code
title: 265; label: Example ex04_2: @Path with Expressions
title: 266; label: Build and Run the Example Program
title: 266; label: The Server Code
title: 266; label: The Client Code
title: 268; label: Example ex04_3: Subresource Locators
title: 268; label: Build and Run the Code
title: 268; label: The Server Code
title: 268; label: The Client Code
title: 268; label: 20. Examples for Chapter 5
title: 271; label: Example ex05_1: Injecting URI Information
title: 271; label: The Server Code
title: 271; label: The Client Code
title: 274; label: Build and Run the Example Program
title: 275; label: Example ex05_02: Forms and Cookies
title: 275; label: The Server Code
title: 275; label: Build and Run the Example Program
title: 277; label: 21. Examples for Chapter 6
title: 279; label: Example ex06_1: Using JAXB
title: 279; label: The Client Code
title: 281; label: Changes to pom.xml
title: 282; label: Build and Run the Example Program
title: 282; label: Example ex06_2: Creating a Content Handler
title: 283; label: The Content Handler Code
title: 283; label: The Resource Class
title: 285; label: The Application Class
title: 285; label: The Client Code
title: 286; label: Build and Run the Example Program
title: 286; label: 22. Examples for Chapter 7
title: 287; label: Example ex07_1: ExceptionMapper
title: 287; label: The Client Code
title: 289; label: Build and Run the Example Program
title: 290; label: 23. Examples for Chapter 9
title: 291; label: Example ex09_1: Conneg with JAX-RS
title: 291; label: The Client Code
title: 292; label: Build and Run the Example Program
title: 293; label: Example ex09_2: Conneg via URL Patterns
title: 293; label: The Server Code
title: 293; label: Build and Run the Example Program
title: 294; label: 24. Examples for Chapter 10
title: 295; label: Example ex10_1: Atom Links
title: 295; label: The Server Code
title: 296; label: The Client Code
title: 299; label: Build and Run the Example Program
title: 299; label: Example ex10_2: Link Headers
title: 299; label: The Server Code
title: 300; label: The Client Code
title: 304; label: Build and Run the Example Program
title: 306; label: 25. Examples for Chapter 11
title: 307; label: Example ex11_1: Caching and Concurrent Updates
title: 307; label: The Server Code
title: 307; label: The Client Code
title: 310; label: Build and Run the Example Program
title: 311; label: 26. Examples for Chapter 12
title: 313; label: Example ex12_1: ContainerResponseFilter and DynamicFeature
title: 313; label: The Server Code
title: 313; label: The Client Code
title: 314; label: Build and Run the Example Program
title: 315; label: Example ex12_2: Implementing a WriterInterceptor
title: 315; label: The Client Code
title: 316; label: Build and Run the Example Program
title: 317; label: 27. Examples for Chapter 13
title: 319; label: Example 13_1: Chat REST Interface
title: 319; label: The Client Code
title: 320; label: The Server Code
title: 322; label: Build and Run the Example Program
title: 326; label: 28. Examples for Chapter 14
title: 327; label: Example ex14_1: EJB and JAX-RS
title: 327; label: Project Structure
title: 327; label: The EJBs
title: 328; label: The Remaining Server Code
title: 333; label: The Client Code
title: 334; label: Build and Run the Example Program
title: 337; label: Example ex14_2: Spring and JAX-RS
title: 337; label: Build and Run the Example Program
title: 340; label: 29. Examples for Chapter 15
title: 341; label: Example ex15_1: Custom Security
title: 341; label: One-Time Password Authentication
title: 341; label: Allowed-per-Day Access Policy
title: 345; label: Build and Run the Example Program
title: 351; label: Example ex15_1: JSON Web Encryption
title: 351; label: Build and Run the Example Program
title: 353; label: Index
title: 355