This course is a comprehensive look at the state of the art in developing interoperable web services on the Java EE 6 platform. Students learn the key standards for both SOAP-based and RESTful services, and the Java architectures that have evolved to build interoperable services and clients. We begin with an introductory module that covers both SOAP-based and RESTful services, and therefore both JAX-WS and JAX-RS. We then discuss JAXB, as this highly useful XML API is integral to both. The remainder of the course is split between two larger modules, each of which falls on one side of the fence: either SOAP services with JAX-WS, or RESTful services with JAX-RS. We cover SOAP, WSDL, and both WSDL-driven and Java-driven development paths for JAX-WS, as well as client-side development. Then students work with the Jersey implementation of JAX-RS to create RESTful services, from simple single-value interactions to more sophisticated services that manage CRUD (create/retrieve/update/delete) operations on more complex data types, using JAXB to marshal and unmarshal data over the wire.
Strong Java programming skills are essential. A Java programming course is excellent preparation. Students must be able to read XML documents and to write well-formed XML by hand -- consider an introductory XML course. Knowledge of XML Schema will be helpful, too, but is not a strict prerequisite – consider an XML Schema course. Experience with other Java EE standards, especially servlets and JSP, will be very helpful in class, but is not strictly required.
5 Days/Lecture & Lab
This course is designed for the experienced Java programmer.
Overview of Web Services
- Web Services for Java EE
- The Java API for XML Binding
- The Simple Object Access Protocol
- Web Services Description Language
- The Java API for XML-Based Web Services
- WSDL-to-Java Development
- Client-Side Development
- Java-to-WSDL Development
- The Java API for RESTful Services
- Dispatching Requests to Methods
- Parameter and Return Types
- Entities and Complex Content
- Context and Lifecycle