Java SOA Cookbook: SOA Implementation Recipes, Tips, and Techniques

Java SOA Cookbook: SOA Implementation Recipes, Tips, and Techniques

by Eben Hewitt

NOOK Book(eBook)

$23.49 $39.99 Save 41% Current price is $23.49, Original price is $39.99. You Save 41%.
View All Available Formats & Editions

Available on Compatible NOOK Devices and the free NOOK Apps.
WANT A NOOK?  Explore Now


Java SOA Cookbook offers practical solutions and advice to programmers charged with implementing a service-oriented architecture (SOA) in their organization. Instead of providing another conceptual, high-level view of SOA, this cookbook shows you how to make SOA work. It's full of Java and XML code you can insert directly into your applications and recipes you can apply right away.

The book focuses primarily on the use of free and open source Java Web Services technologies -- including Java SE 6 and Java EE 5 tools -- but you'll find tips for using commercially available tools as well.

Java SOA Cookbook will help you:

  • Construct XML vocabularies and data models appropriate to SOA applications
  • Build real-world web services using the latest Java standards, including JAX-WS 2.1 and JAX-RS 1.0 for RESTful web services
  • Integrate applications from popular service providers using SOAP, POX, and Atom
  • Create service orchestrations with complete coverage of the WS-BPEL (Business Process Execution Language) 2.0 standard
  • Improve the reliability of SOAP-based services with specifications such as WS-Reliable Messaging
  • Deal with governance, interoperability, and quality-of-service issues

The recipes in Java SOA Cookbook will equip you with the knowledge you need to approach SOA as an integration challenge, not an obstacle.

Product Details

ISBN-13: 9780596555498
Publisher: O'Reilly Media, Incorporated
Publication date: 03/17/2009
Sold by: Barnes & Noble
Format: NOOK Book
Pages: 742
File size: 6 MB

About the Author

Eben Hewitt is a Principal on the architecture team at a multi-billion dollar national retail company, where he has been focused on designing and building their Service Oriented Architecture. He has worked in IT for ten years, working on large-scale web and SOA integration projects, distributed software, and messaging systems. Hewitt is the author of four previous programming books, several industry articles, and is a contributor to the O'Reilly book 97 Things Every Software Architect Should Know, edited by Richard Monson-Haefel. He is a popular speaker at industry conferences and local user groups.

Table of Contents

Preface; Overview; Intended Audience; What This Book Covers; How to Read This Book; Using Code Examples; Hang in There!; Conventions Used in This Book; Safari® Books Online; How to Contact Us; Dedication; Acknowledgments; SOA Fundamentals; Chapter 1: Introduction to SOA; 1.1 Introduction; 1.2 Defining a Service; 1.3 Defining SOA; 1.4 Identifying Service Candidates; 1.5 Identifying Different Kinds of Services; 1.6 Modeling Services; 1.7 Making a Service Composable; 1.8 Supporting Your SOA Efforts; 1.9 Selecting a Pilot Project; 1.10 Establishing Governance; 1.11 Summary; Chapter 2: XML Schema and the SOA Data Model; 2.1 Introduction; 2.2 Designing Schema for SOA; 2.3 Creating Canonical Data Model; 2.4 Using Chameleon Namespace Design; 2.5 Versioning Schemas; 2.6 Reference Schemas; 2.7 Common Schema Types; 2.8 Validating an XML Document Against a Schema; 2.9 Validating an XML Document Against Multiple Schemas; 2.10 Restricting Schema Types with Regular Expressions; 2.11 Using Schema Enumerations; 2.12 Generating Java Classes from Schema; 2.13 Generating a Schema from Java; 2.14 Generating Java Source Files from XML Schema in Ant; 2.15 Generating an XML Document Instance from a Schema; 2.16 Customizing How a Java Class Is Generated from Schema; 2.17 Validating Against a Schema During Marshaling and Unmarshaling; 2.18 Collecting Schema Validation Events During Marshaling and Unmarshaling; 2.19 Summary; Chapter 3: Working with XML and Java; 3.1 Introduction; 3.2 Reading an XML Data Stream; 3.3 Writing XML Data Streams; 3.4 Filtering Data in an XML Stream; 3.5 Selecting Values from an XML Document; 3.6 Updating a Value in an XML Document; 3.7 Converting a Java Object into an XML Document Instance; 3.8 Converting an XML Document Instance into a Java Object; 3.9 Generating a Schema from an XML Document; 3.10 Converting XML to Java Without JAXB; 3.11 Customizing Code Generation in JAXB; 3.12 Finding the JAR That Contains a Given Class on Linux; 3.13 Transparently Substituting XML Files; 3.14 Summary; Web Services; Chapter 4: Getting Started; 4.1 Introduction; 4.2 Using Publicly Available Web Services to Test Against; 4.3 Installing Metro; 4.4 Installing Oracle WebLogic; 4.5 Creating and Deploying the Simplest Web Service; 4.6 Creating and Deploying a Service to WebLogic; 4.7 Setting Up a Maven 2 Service and Client Project; 4.8 Understanding WSDL; 4.9 Using References in NetBeans to Generate Web Service Clients; 4.10 Monitoring SOAP Traffic with Metro; 4.11 Monitoring SOAP Traffic with TCPMon; Chapter 5: Web Services with SAAJ; 5.1 Introduction; 5.2 Creating a SOAP Element with a Qualified Name; 5.3 Creating a Complete SOAP Message; 5.4 Writing a SOAP Response to an Output Stream; 5.5 Creating a Web Service Client Based on an Existing SOAP Envelope; 5.6 Extracting Content from a SOAP Message; 5.7 Creating a Web Service Client Using Raw XML Source and DOM; 5.8 Adding a MIME Header; 5.9 Adding Namespace Declarations; 5.10 Specifying SOAPAction; 5.11 Adding an Attribute to an Element; 5.12 Removing a Header from a SOAP Message; 5.13 Adding Headers to a SOAP Request; 5.14 Accessing All SOAP Header Elements; 5.15 Adding an Attachment to an Outbound SOAP Message; 5.16 Accessing Inbound Attachment Data; 5.17 Connecting to a SAAJ Endpoint Without a WSDL; 5.18 Working with SOAP Actors; 5.19 Asynchronous Invocation with Dispatch; 5.20 Validating Your Payload Against a Schema on the Client; 5.21 Providing a Web Service with SAAJ; 5.22 Sending and Receiving SOAP Faults; 5.23 Summary; Chapter 6: Creating Web Service Applications with JAX-WS; 6.1 Introduction; 6.2 Calling a Web Service from the Command Line; 6.3 Using JAX-WS Annotation Name Properties; 6.4 Invoking the Simplest Web Service; 6.5 Creating a Client Proxy; 6.6 Consuming a Web Service from a Servlet or EJB; 6.7 Consuming a Web Service from a JSP; 6.8 Using a JAXB-Annotated Instance in a SOAP Message; 6.9 Using wsimport in a Maven Project; 6.10 Dealing with Version Errors in wsgen and wsimport; 6.11 Adding Headers to a SOAP Request; 6.12 Intercepting the Request to Perform Protocol-Specific Work; 6.13 Intercepting the Request to Perform Work on Your Payload; 6.14 Sharing Data Between Handler Invocations; 6.15 Passing Binary Data in a Request; 6.16 Using Binary Data in a SOAP Message; 6.17 Enabling Binary Optimization on the Client; 6.18 Validating a SOAP Payload Against a Schema with Metro; 6.19 Making Asynchronous Calls with a JAX-WS Client; 6.20 Overriding the Endpoint Address in an SEI; 6.21 Summary; Chapter 7: Providing SOAP-Based Web Serviceeeeees; 7.1 Introduction; 7.2 Assembling a Service for Deployment; 7.3 Determining a Service Development Model; 7.4 Choosing Encoding, Use, and Parameter Styles; 7.5 Generating a WSDL and Portable Artifacts Based on a Java Service Endpoint Implementation; 7.6 Creating a Basic Web Service; 7.7 Specifying Namespaces; 7.8 Creating a Web Service Operation; 7.9 Specifying a Web Service Message Part; 7.10 Specifying an Operation Return Value; 7.11 Defining Zero-Argument Operations; 7.12 Defining Operations with Void Return Type; 7.13 Creating a Web Service That Uses Complex Types Based on Custom WSDL and a Custom Schema; 7.14 Specifying the SOAP Binding Style, Use, and Parameter Style; 7.15 Configuring Standard Custom Bindings; 7.16 Excluding a Public Method from a Service; 7.17 Creating a Service Provider with an XML View; 7.18 Implementing Server-Side Handler Chains; 7.19 Providing Stateful Services; 7.20 Adding a Header with a Method Parameter; 7.21 Accessing Incoming Header Parameters in a Service; 7.22 Providing a Value for SOAP Action or WS-Addressing Action; 7.23 Optimizing Transmission of Binary Content on the Server; 7.24 Getting and Sharing Data About Users and the Request; 7.25 Using Header References with Holder 7.26 Summary; Chapter 8: RESTful Web Services; 8.1 Introduction; 8.2 Creating a POX over HTTP Service with Servlets; 8.3 A RESTful Service with JAX-WS; 8.4 Creating a Client for a RESTful Service Using Sockets; 8.5 Application: Using SSL, Atom Publishing, and the Google Finance REST API; 8.6 Setting Up the Jersey JAX-RS Implementation; 8.7 Creating a Jersey Project with Eclipse and Tomcat; 8.8 Creating Hello World with Jersey; 8.9 Creating a Single Path for Variable Resources of the Same Type; 8.10 Restricting the Structure of Values in a Path Template; 8.11 Accessing Query Parameters; 8.12 Marshaling a Custom Type to XML in a Response; 8.13 Offering Different Representations of the Same Resource; 8.14 Creating a Resource; 8.15 Working with Forms and URIs; 8.16 Using SAAJ to Access a RESTful Service; 8.17 Setting Metadata on Representations; 8.18 Deleting a Resource; 8.19 Redirecting to Another Service; 8.20 Accessing HTTP Headers; 8.21 Working with Cookies; 8.22 Working with Exceptions and Response Status Codes; 8.23 Working with WADL; 8.24 Interacting with a Resource Using a Custom Reader and Writer; 8.25 Summary; Business Processes; Chapter 9: Service Orchestrations with BPEL; 9.1 Introduction; 9.2 Determining a Process Design Method; 9.3 Selecting a Business Process Language; 9.4 Getting Apache ODE BPEL Engine; 9.5 Deploying a Process to Apache ODE; 9.6 Understanding BPEL Process Basics; 9.7 Using a Free Graphical Designer to Create BPEL Processes; 9.8 Creating a BPEL Process That Invokes a Partner; 9.9 Deploying a BPEL Process to OpenESB’s BPEL Service Engine; 9.10 Testing a Deployed BPEL Process; 9.11 Installing Active Endpoints BPEL Designer; 9.12 Installing Active Endpoints BPEL Engine; 9.13 Creating a BPEL Process in Active Endpoints Designer; 9.14 Deploying a Process to Active Endpoints Server; 9.15 Using Web Service Partners; 9.16 Invoking a Partner Service from a BPEL Process; 9.17 Manipulating Data with BPEL Variables; 9.18 Using Literals; 9.19 Concatenating Values; 9.20 Choosing an Activity to Execute Based on Runtime Conditions; 9.21 Executing Multiple Activities in a Sequence; 9.22 Using Logical Divisions to Group Activities; 9.23 Summary; Chapter 10: Advanced Orchestrations with BPEL; 10.1 Introduction; 10.2 Executing Activities in Parallel; 10.3 Synchronizing Activities Executing in Parallel; 10.4 Doing Nothing; 10.5 Executing an Activity at a Specific Point in Time; 10.6 Executing an Activity After a Specific Delay; 10.7 Selective Event Processing; 10.8 Handling Faults; 10.9 Explicitly Throwing a Fault; 10.10 Stopping a Process; 10.11 Performing an XSL Transformation on BPEL Message Data; 10.12 Validating Inbound Message Data; 10.13 Correlation Sets; 10.14 Looping; 10.15 Adding Human Tasks to a Business Process; 10.16 Invoking a RESTful Web Service from BPEL; 10.17 Summary; Chapter 11: SOA Governance; 11.1 Introduction; 11.2 Assigning Roles; 11.3 Creating a SOA Roadmap; 11.4 Keeping Track of Your Services; 11.5 Determining a Data Ownership Scheme for Services; 11.6 Handling Legacy Programs and Heterogeneity Within Your SOA; 11.7 Documenting Services; 11.8 Setting Up a Service Registry; 11.9 Packaging Related Services; 11.10 Retiring a Service; 11.11 Browsing a UDDI Registry; 11.12 Querying a UDDI Registry Programmatically; 11.13 Understanding SOA ROI; Interoperability and Quality of Service; Chapter 12: Web Service Interoperability; 12.1 Introduction; 12.2 Dealing with Arrays; 12.3 Abstracting Addressing; 12.4 Using Addressing in a Java Service; 12.5 Explicitly Enabling Addressing on the Client; 12.6 Explicitly Disabling Addressing on the Client; 12.7 Abstracting Addressing in the Transport Layer from WSDL; 12.8 Addressing Faults; 12.9 Creating a .NET Web Service Client in Visual Studio; 12.10 Creating a .NET Web Service Client in C#; 12.11 Creating a .NET Web Service; 12.12 Creating a Ruby Client for a Web Service; 12.13 Creating a Ruby Client for a .NET Service; 12.14 Conforming to the Basic Profile; 12.15 Automating Testing for Basic Profile Conformance; 12.16 Interoperability Best Practices; 12.17 Using Modular WSDLs; Chapter 13: Quality of Service; 13.1 Introduction; 13.2 Understanding Reliable Messaging; 13.3 Configuring a Java Web Service with Reliable Messaging; 13.4 Configuring a Java Client with Reliable Messaging; 13.5 Configuring a Java Web Service with Reliable Messaging on WebLogic; 13.6 Using a WebLogic Reliable Messaging Error Handler; Chapter 14: Enterprise Service Bus; 14.1 Introduction; 14.2 What Is ESB?; 14.3 ESB As a Set of Patterns; 14.4 JBI; 14.5 Commercial ESBs; 14.6 Open Source ESBs; 14.7 Summary; Colophon;

Eben Hewitt is a Principal on the architecture team at a multi-billion dollar national retail company, where he has been focused on designing and building their Service Oriented Architecture. He has worked in IT for ten years, working on large-scale web and SOA integration projects, distributed software, and messaging systems. Hewitt is the author of four previous programming books, several industry articles, and is a contributor to the O'Reilly book 97 Things Every Software Architect Should Know, edited by Richard Monson-Haefel. He is a popular speaker at industry conferences and local user groups.

Customer Reviews