WA2167
Programming REST Web Services with JAX-RS 1.1 - WebSphere 8.5 / RAD 8.5 Training
This course covers the design principles of REST architecture along with the details of how to implement these services with JAX-RS. This will allow students who take the course to implement RESTful services using Java standards that will be portable to many different Java environments.
Course Details
Duration
2 days
Prerequisites
- Experience with Java programming is required.
- Experience with Eclipse/RAD is useful but not required.
- An understanding of basic web architecture and the HTTP protocol.
- Prior experience with RPC-style services such as Web services, Java RMI, COM objects, etc. is helpful, but not required.
Target Audience
Architects and Developers that need to design and develop SOAP web services using JAX-WS and RESTful web services using JAX-RS.
Skills Gained
- Understand the REST style of software architecture
- Describe the advantages and disadvantages of applying RESTful design strategies to various scenarios
- Implement RESTful services using the JAX-RS Java specification
- Create JAX-RS services that use various types of request/response content
- Compare and contrast REST with RPC, SOAP, and other similar communication strategies
- Apply fine-grained control of the responses returned from JAX-RS services
- Use various techniques to implement clients of RESTful services
- Apply Java EE security to JAX-RS services
Course Outline
- REST Services
- Many Flavors of Services
- Understanding REST
- Principles of RESTful Services
- REST Example – Create
- REST Example – Retrieve
- REST Example – Update
- REST Example – Delete
- REST Example – Client Generated ID
- SOAP Equivalent Examples
- REST Example – JSON
- REST vs SOAP Communication
- More REST vs SOAP
- REST vs SOAP Summary
- Famous RESTful Services
- Introduction to JAX-RS
- The JAX-RS Specification
- The Resource Class
- A Bunch of Annotations
- @Path
- Using Path Parameters
- HTTP Method Binding
- More Complex Paths
- Configuring JAX-RS for Deployment
- JAX-RS Data Injection
- Sources for Injected Data
- Path Parameters
- Query Parameters
- HTML Form Input
- Cookies
- Matrix Parameters
- HTTP Headers
- Default Values
- Parameter Conversion
- Custom Types
- Designing a RESTful Service
- The Design Methodology
- Ingredients of a Service Operation Interface
- What Constitutes a REST Resource
- Resource Identifiers
- MIME Types
- HTTP Methods
- Request and Response Body Structure
- Example Operation Interface Document
- Web Application Description Language (WADL)
- WADL Support
- JAX-RS Content Types
- Internet Media Types
- Use of Media Type in REST
- The @Consumes Annotation
- Content Negotiation
- The @Produces Annotation
- The MediaType Class
- JAXB
- Dynamic Content Negotiation
- Building Complex JAX-RS Responses
- HTTP Response Status Codes
- Introduction to the JAX-RS Response Class
- Using the Response and Response.ResponseBuilder Classes
- Example: Conditional HTTP GET
- Returning Cookies
- Cookies in Response Headers
- Reading Cookies
- Returning an Exception
- ExceptionMappers
- Clients of JAX-RS Services
- Java Web Service Clients
- Apache HttpClient
- More Apache HttpClient Code
- JAX-RS Implementation Client Libraries
- RESTEasy Example
- HATEOAS
- Building Links with UriBuilder and UriInfo
- Using Atom Links for State Transitions
- WADL
- Securing JAX-RS Services
- HTTP Basic Authentication
- Example Client
- The WWW-Authenticate and Authorization Headers
- Java EE Security Roles
- Integration with Web Container Security
- Java EE Security Annotations
- SecurityContext
- Restrictions Based on Content Type
- REST vs. SOAP
- Defining REST
- The Six REST Architectural Style Constraints
- The Four REST Interface Constraints
- Hypermedia Examples
- Defining SOAP
- RPC SOAP vs. REST
- Document SOAP vs. REST
- Where SOAP Shines
- Where REST Shines
- Selecting an Appropriate Solution
- Lab Exercises
- Lab 1. WebSphere Workspace Configuration
- Lab 2. Develop a Simple RESTful Service
- Lab 3. Extracting Information from a HTTP Request
- Lab 4. Designing a RESTful Service
- Lab 5. Add Support for XML Format
- Lab 6. Add Support for JSON
- Lab 7. Build the Order Web Service
- Lab 8. Complete the Order Service
- Lab 9. Developing a JAX-RS Client
- Lab 10. Securing RESTful Services