You are previewing Java SOA Cookbook.
O'Reilly logo
Java SOA Cookbook

Book Description

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.

Table of Contents

  1. Java SOA Cookbook
    1. SPECIAL OFFER: Upgrade this ebook with O’Reilly
    2. A Note Regarding Supplemental Files
    3. Preface
      1. Overview
      2. Intended Audience
      3. What This Book Covers
        1. Part I, SOA Fundamentals
        2. Part II, Web Services
        3. Part III, Business Processes
        4. Part IV, Interoperability and Quality of Service
      4. How to Read This Book
      5. Using Code Examples
      6. Hang in There!
      7. Conventions Used in This Book
      8. Safari® Books Online
      9. How to Contact Us
      10. Dedication
      11. Acknowledgments
    4. I. SOA Fundamentals
      1. 1. Introduction to SOA
        1. Introduction
        2. Defining a Service
          1. Problem
          2. Solution
          3. Discussion
            1. Platform-independent interface
            2. Available across a network
            3. Operates on business objects
            4. Decoratable
            5. Other considerations
        3. Defining SOA
          1. Problem
          2. Solution
            1. SOA is a kind of architecture
            2. SOA is built with services
            3. SOA facilitates integration
            4. SOA facilitates reuse through loose coupling
            5. Invoking services
            6. Other considerations
        4. Identifying Service Candidates
          1. Problem
          2. Solution
          3. Discussion
            1. Top-down or bottom-up approach
          4. See Also
        5. Identifying Different Kinds of Services
          1. Problem
          2. Solution
          3. Discussion
        6. Modeling Services
          1. Problem
          2. Solution
          3. Discussion
            1. Service documentation
        7. Making a Service Composable
          1. Problem
          2. Solution
          3. Discussion
        8. Supporting Your SOA Efforts
          1. Problem
          2. Solution
          3. Discussion
            1. Aims of the reference architecture
            2. Reference architecture site
              1. Conventions
              2. Standards
              3. Specifications
              4. Centralized bookmarks
              5. Industry standards
              6. Security
              7. Cookbook
              8. Glossary
              9. Documentation
              10. Artifacts
              11. News
            3. Conclusion
        9. Selecting a Pilot Project
          1. Problem
          2. Solution
          3. Discussion
            1. Does the project create business value?
            2. Does the project have limited scope?
            3. Would the project make a good service?
            4. Do the team members have a good understanding of the problem domain?
            5. Is the project useful but not mission critical?
            6. The second pilot
        10. Establishing Governance
          1. Problem
          2. Solution
          3. Discussion
            1. Common pitfalls governance helps you avoid
              1. Service redundancy
              2. Sundry artifacts
              3. DBA (Death by Acronym)
            2. Resume padding
            3. Bunny services
        11. Summary
      2. 2. XML Schema and the SOA Data Model
        1. Introduction
        2. Designing Schema for SOA
          1. Problem
          2. Solution
            1. Russian Doll
            2. Salami Slice
            3. Venetian Blind
          3. See Also
          4. Garden of Eden
        3. Creating Canonical Data Model
          1. Problem
          2. Solution
          3. Discussion
            1. Defining the canonical data model
            2. Recommendations
            3. Updating the canonical data model
          4. See Also
        4. Using Chameleon Namespace Design
          1. Problem
          2. Solution
        5. Versioning Schemas
          1. Problem
          2. Solution
          3. Discussion
            1. Use the version attribute
            2. Hack the root element
            3. Change the name or URI of the schema document
            4. Use the namespace and document name
        6. Reference Schemas
          1. Problem
          2. Solution
        7. Common Schema Types
          1. Problem
          2. Solution
            1. Person’s name
            2. U.S. phone number
            3. Email address
            4. U.S. postal code
            5. Social Security number
            6. Canadian postal code
            7. Canadian provinces
            8. URL
            9. IP address
        8. Validating an XML Document Against a Schema
          1. Problem
          2. Solution
        9. Validating an XML Document Against Multiple Schemas
          1. Problem
          2. Solution
        10. Restricting Schema Types with Regular Expressions
          1. Problem
          2. Solution
          3. See Also
        11. Using Schema Enumerations
          1. Problem
          2. Solution
        12. Generating Java Classes from Schema
          1. Problem
          2. Solution
            1. Working with JAXB
          3. JAXB Annotations
            1. XMLRootElement
              1. XMLAccessorType
              2. XMLElement
          4. Conclusion
        13. Generating a Schema from Java
          1. Problem
          2. Solution
            1. Using schemagen
            2. Using SchemaOutputResolver
        14. Generating Java Source Files from XML Schema in Ant
          1. Problem
          2. Solution
          3. Discussion
        15. Generating an XML Document Instance from a Schema
          1. Problem
          2. Solution
            1. Relaxer
        16. Customizing How a Java Class Is Generated from Schema
          1. Problem
          2. Solution
          3. Using Inline Annotations
          4. Using an External File (schemalet)
        17. Validating Against a Schema During Marshaling and Unmarshaling
          1. Problem
          2. Solution
          3. See Also
        18. Collecting Schema Validation Events During Marshaling and Unmarshaling
          1. Problem
          2. Solution
            1. ValidationEventCollector
        19. Summary
      3. 3. Working with XML and Java
        1. Introduction
        2. Reading an XML Data Stream
          1. Problem
          2. Solution
          3. Discussion
            1. Using the StAX cursor model: XMLStreamReader
            2. Using the StAX iterator model
        3. Writing XML Data Streams
          1. Problem
          2. Solution
        4. Filtering Data in an XML Stream
          1. Problem
          2. Solution
        5. Selecting Values from an XML Document
          1. Problem
          2. Solution
          3. Discussion
        6. Updating a Value in an XML Document
          1. Problem
          2. Solution
        7. Converting a Java Object into an XML Document Instance
          1. Problem
          2. Solution
        8. Converting an XML Document Instance into a Java Object
          1. Problem
          2. Solution
        9. Generating a Schema from an XML Document
          1. Problem
          2. Solution
          3. Discussion
            1. Generating a set of schemas from a single XML document
          4. See Also
        10. Converting XML to Java Without JAXB
          1. Problem
          2. Solution
        11. Customizing Code Generation in JAXB
          1. Problem
          2. Solution
        12. Finding the JAR That Contains a Given Class on Linux
          1. Problem
          2. Solution
          3. Discussion
        13. Transparently Substituting XML Files
          1. Problem
          2. Solution
          3. Discussion
            1. XML catalog entities
            2. Using XML Catalogs in wsimport
          4. See Also
        14. Summary
    5. II. Web Services
      1. 4. Getting Started
        1. Introduction
        2. Using Publicly Available Web Services to Test Against
          1. Problem
          2. Solution
          3. Discussion
        3. Installing Metro
          1. Problem
          2. Solution
          3. Discussion
            1. Using Metro 1.3 in Maven
        4. Installing Oracle WebLogic
          1. Problem
          2. Solution
            1. Starting the server console
          3. See Also
        5. Creating and Deploying the Simplest Web Service
          1. Problem
          2. Solution
          3. See Also
        6. Creating and Deploying a Service to WebLogic
          1. Problem
          2. Solution
            1. Create a web service project
            2. Create the web service
            3. Deploy the web service
            4. Test the service using the built-in test client
        7. Setting Up a Maven 2 Service and Client Project
          1. Problem
          2. Solution
          3. Discussion
            1. Creating the service project
            2. Creating the client project
            3. Creating the parent project
        8. Understanding WSDL
          1. Problem
          2. Solution
          3. Discussion
            1. Types
            2. Messages
            3. Binding
            4. Service
        9. Using References in NetBeans to Generate Web Service Clients
          1. Problem
          2. Solution
          3. Discussion
        10. Monitoring SOAP Traffic with Metro
          1. Problem
          2. Solution
          3. Discussion
            1. Dumping during a Maven unit test run
            2. Transport-independent logging
          4. See Also
        11. Monitoring SOAP Traffic with TCPMon
          1. Problem
          2. Solution
          3. Discussion
            1. Running TCPMon
      2. 5. Web Services with SAAJ
        1. Introduction
          1. Relation to JAX-M
          2. SAAJ and JAX-WS
          3. SAAJ Packages and Classes
        2. Creating a SOAP Element with a Qualified Name
          1. Problem
          2. Solution
          3. Discussion
            1. URIs, URLs, and URNs in namespaces
          4. See Also
        3. Creating a Complete SOAP Message
          1. Problem
          2. Solution
        4. Writing a SOAP Response to an Output Stream
          1. Problem
          2. Solution
          3. Discussion
        5. Creating a Web Service Client Based on an Existing SOAP Envelope
          1. Problem
          2. Solution
          3. Discussion
        6. Extracting Content from a SOAP Message
          1. Problem
          2. Solution
        7. Creating a Web Service Client Using Raw XML Source and DOM
          1. Problem
          2. Solution
        8. Adding a MIME Header
          1. Problem
          2. Solution
          3. Discussion
        9. Adding Namespace Declarations
          1. Problem
          2. Solution
          3. Discussion
        10. Specifying SOAPAction
          1. Problem
          2. Solution
          3. Discussion
        11. Adding an Attribute to an Element
          1. Problem
          2. Solution
          3. Discussion
        12. Removing a Header from a SOAP Message
          1. Problem
          2. Solution
          3. Discussion
        13. Adding Headers to a SOAP Request
          1. Problem
          2. Solution
          3. Discussion
            1. Creating the web service
            2. Examining the WSDL
            3. Examining the schema
            4. Building the client program
            5. Assessing the results
          4. See Also
        14. Accessing All SOAP Header Elements
          1. Problem
          2. Solution
          3. Discussion
        15. Adding an Attachment to an Outbound SOAP Message
          1. Problem
          2. Solution
          3. Discussion
          4. See Also
        16. Accessing Inbound Attachment Data
          1. Problem
          2. Solution
          3. Discussion
          4. See Also
        17. Connecting to a SAAJ Endpoint Without a WSDL
          1. Problem
          2. Solution
          3. Discussion
        18. Working with SOAP Actors
          1. Problem
          2. Solution
          3. Discussion
        19. Asynchronous Invocation with Dispatch
          1. Problem
          2. Solution
          3. Discussion
          4. See Also
        20. Validating Your Payload Against a Schema on the Client
          1. Problem
          2. Solution
          3. Discussion
        21. Providing a Web Service with SAAJ
          1. Problem
          2. Solution
          3. Discussion
        22. Sending and Receiving SOAP Faults
          1. Problem
          2. Solution
          3. Discussion
            1. Sending a fault
            2. Getting fault information
            3. Getting fault details
          4. See Also
        23. Summary
      3. 6. Creating Web Service Applications with JAX-WS
        1. Introduction
          1. JAX-WS in Relation to Other APIs
          2. Three Approaches
          3. Annotations
          4. Service Endpoints
          5. Packages and Classes
        2. Calling a Web Service from the Command Line
          1. Problem
          2. Solution
          3. Discussion
            1. Verifying wsimport
            2. Generating client code
            3. Creating the client class
            4. Compiling the client
            5. Running the client
        3. Using JAX-WS Annotation Name Properties
          1. Problem
          2. Solution
          3. Discussion
            1. WebService.targetNamespace
            2. WebService.name
            3. WebService.serviceName
            4. WebService.portName
            5. Service Ref with dependency injection
        4. Invoking the Simplest Web Service
          1. Problem
          2. Solution
          3. See Also
        5. Creating a Client Proxy
          1. Problem
          2. Solution
          3. Discussion
            1. The generated Service class
            2. The generated Port class
        6. Consuming a Web Service from a Servlet or EJB
          1. Problem
          2. Solution
          3. Discussion
            1. WebServiceRefs
        7. Consuming a Web Service from a JSP
          1. Problem
          2. Solution
          3. Discussion
        8. Using a JAXB-Annotated Instance in a SOAP Message
          1. Problem
          2. Solution
          3. Discussion
        9. Using wsimport in a Maven Project
          1. Problem
          2. Solution
          3. Discussion
            1. Using a variable for the WSDL location
        10. Dealing with Version Errors in wsgen and wsimport
          1. Problem
          2. Solution
          3. Discussion
            1. Using endorsed directories
            2. Using with Ant
        11. Adding Headers to a SOAP Request
          1. Problem
          2. Solution
          3. Discussion
            1. Using Holder<T>
            2. Using Headers.create and JAXB
            3. Additional workarounds
          4. See Also
        12. Intercepting the Request to Perform Protocol-Specific Work
          1. Problem
          2. Solution
          3. Discussion
            1. Implementing a simple handler
          4. See Also
        13. Intercepting the Request to Perform Work on Your Payload
          1. Problem
          2. Solution
          3. Discussion
        14. Sharing Data Between Handler Invocations
          1. Problem
          2. Solution
          3. Discussion
            1. MessageContext properties
            2. SOAPMessageContext
            3. LogicalMessageContext
        15. Passing Binary Data in a Request
          1. Problem
          2. Solution
          3. See Also
        16. Using Binary Data in a SOAP Message
          1. Problem
          2. Solution
          3. Discussion
          4. See Also
        17. Enabling Binary Optimization on the Client
          1. Problem
          2. Solution
          3. See Also
        18. Validating a SOAP Payload Against a Schema with Metro
          1. Problem
          2. Solution
          3. Discussion
            1. Adding Metro to the client in Maven
        19. Making Asynchronous Calls with a JAX-WS Client
          1. Problem
          2. Solution
          3. Using Asynchronous Polling
          4. Using Asynchronous Callbacks
            1. Writing the callback handler
        20. Overriding the Endpoint Address in an SEI
          1. Problem
          2. Solution
          3. Discussion
        21. Summary
      4. 7. Providing SOAP-Based Web Services
        1. Introduction
        2. Assembling a Service for Deployment
          1. Problem
          2. Solution
          3. Discussion
            1. Web service or provider
            2. Interfaces
            3. Packaging WSDL
            4. Deployment descriptors
        3. Determining a Service Development Model
          1. Problem
          2. Solution
          3. Discussion
            1. Start from Code (Java)
            2. Start from contract (WSDL)
            3. Start from Java and WSDL
            4. Start from Schema
        4. Choosing Encoding, Use, and Parameter Styles
          1. Problem
          2. Solution
          3. Discussion
            1. Style
              1. RPC style
              2. Document style
            2. Use
            3. Style and use combinations
            4. RPC/encoded
            5. RPC/literal
            6. Document/literal
            7. Document/encoded
            8. Using parameter styles
              1. Wrapped
              2. Bare
            9. Summary
        5. Generating a WSDL and Portable Artifacts Based on a Java Service Endpoint Implementation
          1. Problem
          2. Solution
          3. Discussion
            1. Using the wsgen Ant task
            2. Using wsgen in Maven 2
        6. Creating a Basic Web Service
          1. Problem
          2. Solution
          3. Discussion
            1. Package and types
            2. Class and service
            3. Class and PortType
            4. Method and binding
        7. Specifying Namespaces
          1. Problem
          2. Solution
          3. Discussion
        8. Creating a Web Service Operation
          1. Problem
          2. Solution
          3. Discussion
        9. Specifying a Web Service Message Part
          1. Problem
          2. Solution
          3. Discussion
        10. Specifying an Operation Return Value
          1. Problem
          2. Solution
          3. Discussion
        11. Defining Zero-Argument Operations
          1. Problem
          2. Solution
        12. Defining Operations with Void Return Type
          1. Problem
          2. Solution
          3. Discussion
        13. Creating a Web Service That Uses Complex Types Based on Custom WSDL and a Custom Schema
          1. Problem
          2. Solution
          3. Discussion
            1. Schema
            2. WSDL
            3. Service implementation
            4. JAXB generated types
            5. Build file
          4. See Also
        14. Specifying the SOAP Binding Style, Use, and Parameter Style
          1. Problem
          2. Solution
        15. Configuring Standard Custom Bindings
          1. Problem
          2. Solution
          3. Discussion
            1. Using the external binding file
            2. Using inline elements
          4. See Also
        16. Excluding a Public Method from a Service
          1. Problem
          2. Solution
          3. Discussion
        17. Creating a Service Provider with an XML View
          1. Problem
          2. Solution
          3. Discussion
            1. Creating a Provider<T>
            2. Testing the provider
        18. Implementing Server-Side Handler Chains
          1. Problem
          2. Solution
        19. Providing Stateful Services
          1. Problem
          2. Solution
          3. Discussion
            1. Using WebServiceContext
        20. Adding a Header with a Method Parameter
          1. Problem
          2. Solution
          3. Discussion
        21. Accessing Incoming Header Parameters in a Service
          1. Problem
          2. Solution
          3. Discussion
        22. Providing a Value for SOAP Action or WS-Addressing Action
          1. Problem
          2. Solution
          3. Discussion
            1. Using BindingProvider
        23. Optimizing Transmission of Binary Content on the Server
          1. Problem
          2. Solution
          3. Discussion
          4. See Also
        24. Getting and Sharing Data About Users and the Request
          1. Problem
          2. Solution
          3. Discussion
        25. Using Header References with Holder<T>
          1. Problem
          2. Solution
          3. Discussion
        26. Summary
      5. 8. RESTful Web Services
        1. Introduction
          1. The Principles of REST
            1. REST services are stateless
            2. REST services have a uniform interface
            3. Resources are manipulated through representations
            4. Messages are self-describing
            5. RESTful architectures are built with resources
            6. Hypermedia as the engine of application state
          2. Other Tenets of REST
          3. Advantages of REST
          4. REST Versus SOAP
          5. Restlet
          6. JAX-RS
            1. Jersey
            2. RESTEasy
            3. RESTpack
          7. REST in Java
          8. Non-Java REST Resources
          9. Coming Up
        2. Creating a POX over HTTP Service with Servlets
          1. Problem
          2. Solution
          3. Discussion
          4. See Also
        3. A RESTful Service with JAX-WS
          1. Problem
          2. Solution
          3. Discussion
        4. Creating a Client for a RESTful Service Using Sockets
          1. Problem
          2. Solution
          3. Discussion
        5. Application: Using SSL, Atom Publishing, and the Google Finance REST API
          1. Before You Start
            1. Documentation and clients
          2. About Atom
          3. Creating the Client
        6. Setting Up the Jersey JAX-RS Implementation
          1. Problem
          2. Solution
          3. Discussion
            1. Dependencies
            2. Modifying the web.xml file
        7. Creating a Jersey Project with Eclipse and Tomcat
          1. Problem
          2. Solution
          3. See Also
        8. Creating Hello World with Jersey
          1. Problem
          2. Solution
          3. Discussion
            1. Resource methods
        9. Creating a Single Path for Variable Resources of the Same Type
          1. Problem
          2. Solution
          3. Discussion
        10. Restricting the Structure of Values in a Path Template
          1. Problem
          2. Solution
          3. Discussion
        11. Accessing Query Parameters
          1. Problem
          2. Solution
          3. Discussion
        12. Marshaling a Custom Type to XML in a Response
          1. Problem
          2. Solution
          3. Discussion
        13. Offering Different Representations of the Same Resource
          1. Problem
          2. Solution
          3. Discussion
        14. Creating a Resource
          1. Problem
          2. Solution
          3. Discussion
        15. Working with Forms and URIs
          1. Problem
          2. Solution
          3. Discussion
        16. Using SAAJ to Access a RESTful Service
          1. Problem
          2. Solution
          3. Discussion
        17. Setting Metadata on Representations
          1. Problem
          2. Solution
          3. Discussion
        18. Deleting a Resource
          1. Problem
          2. Solution
          3. Discussion
        19. Redirecting to Another Service
          1. Problem
          2. Solution
          3. Discussion
            1. Redirecting based on class
        20. Accessing HTTP Headers
          1. Problem
          2. Solution
          3. Discussion
            1. Using @HeaderParam
        21. Working with Cookies
          1. Problem
          2. Solution
          3. Discussion
            1. Using HttpHeaders to access cookies
        22. Working with Exceptions and Response Status Codes
          1. Problem
          2. Solution
          3. Discussion
            1. Using exception mappers
        23. Working with WADL
          1. Problem
          2. Solution
          3. Discussion
        24. Interacting with a Resource Using a Custom Reader and Writer
          1. Problem
          2. Solution
          3. Discussion
        25. Summary
    6. III. Business Processes
      1. 9. Service Orchestrations with BPEL
        1. Introduction
          1. Benefits of BPEL
          2. BPEL Engine and Designer Implementations
          3. Overview
        2. Determining a Process Design Method
          1. Problem
          2. Solution
          3. Discussion
            1. The Top-Down approach
            2. The Bottom-Up approach
            3. The Meet in the Middle approach
        3. Selecting a Business Process Language
          1. Problem
          2. Solution
          3. Discussion
            1. BPMN
            2. jPDL
            3. BPEL
        4. Getting Apache ODE BPEL Engine
          1. Problem
          2. Solution
          3. Discussion
        5. Deploying a Process to Apache ODE
          1. Problem
          2. Solution
          3. Discussion
            1. Running the HelloWorld2 example
        6. Understanding BPEL Process Basics
          1. Problem
          2. Solution
          3. Discussion
            1. The <process> element
            2. The <import> element
            3. The <sequence> activity
            4. The <receive> activity
            5. The <assign> activity
            6. The <reply> activity
        7. Using a Free Graphical Designer to Create BPEL Processes
          1. Problem
          2. Solution
          3. Discussion
        8. Creating a BPEL Process That Invokes a Partner
          1. Problem
          2. Solution
          3. Discussion
            1. Creating a simple partner web service
            2. Creating a new BPEL process project
            3. Importing the web service WSDL
            4. Creating a partner link for the web service
            5. Creating the process
            6. Adding a partner to the process
            7. Creating a process WSDL
            8. Completed WSDL
            9. Adding external WSDL to the process
            10. Creating the <receive> activity
            11. Creating the <invoke> activity
            12. Creating the <reply> activity
            13. Creating the inbound assignment
            14. Creating the outbound assignment
            15. Check the source code
            16. Build the BPEL project
          4. See Also
        9. Deploying a BPEL Process to OpenESB’s BPEL Service Engine
          1. Problem
          2. Solution
          3. Discussion
            1. Creating a new CASA project
            2. Adding the BPEL project to the assembly
            3. Building the assembly
            4. Deploying the assembly to the BPEL service engine
          4. See Also
        10. Testing a Deployed BPEL Process
          1. Problem
          2. Solution
          3. Discussion
            1. Creating the test
            2. Executing the test
            3. Load testing
        11. Installing Active Endpoints BPEL Designer
          1. Problem
          2. Solution
          3. Discussion
          4. See Also
        12. Installing Active Endpoints BPEL Engine
          1. Problem
          2. Solution
          3. Discussion
          4. See Also
        13. Creating a BPEL Process in Active Endpoints Designer
          1. Problem
          2. Solution
          3. Discussion
            1. Creating a new process
        14. Deploying a Process to Active Endpoints Server
          1. Problem
          2. Solution
        15. Using Web Service Partners
          1. Problem
          2. Solution
          3. Discussion
        16. Invoking a Partner Service from a BPEL Process
          1. Problem
          2. Solution
          3. Discussion
        17. Manipulating Data with BPEL Variables
          1. Problem
          2. Solution
          3. Discussion
            1. Creating variables
            2. Referencing variables
            3. In-scope namespaces
            4. Comparing variables
            5. Validating variables
        18. Using Literals
          1. Problem
          2. Solution
          3. Discussion
        19. Concatenating Values
          1. Problem
          2. Solution
          3. Discussion
        20. Choosing an Activity to Execute Based on Runtime Conditions
          1. Problem
          2. Solution
          3. Discussion
            1. <elseif> and <else>
        21. Executing Multiple Activities in a Sequence
          1. Problem
          2. Solution
          3. Discussion
          4. See Also
        22. Using Logical Divisions to Group Activities
          1. Problem
          2. Solution
          3. Discussion
        23. Summary
      2. 10. Advanced Orchestrations with BPEL
        1. Introduction
        2. Executing Activities in Parallel
          1. Problem
          2. Solution
          3. Discussion
          4. See Also
        3. Synchronizing Activities Executing in Parallel
          1. Problem
          2. Solution
          3. Discussion
          4. See Also
        4. Doing Nothing
          1. Problem
          2. Solution
          3. Discussion
        5. Executing an Activity at a Specific Point in Time
          1. Problem
          2. Solution
          3. Discussion
        6. Executing an Activity After a Specific Delay
          1. Problem
          2. Solution
          3. Discussion
        7. Selective Event Processing
          1. Problem
          2. Solution
          3. Discussion
            1. Using alarms
        8. Handling Faults
          1. Problem
          2. Solution
          3. Discussion
            1. Default fault handling
        9. Explicitly Throwing a Fault
          1. Problem
          2. Solution
          3. Discussion
        10. Stopping a Process
          1. Problem
          2. Solution
          3. Discussion
        11. Performing an XSL Transformation on BPEL Message Data
          1. Problem
          2. Solution
          3. Discussion
        12. Validating Inbound Message Data
          1. Problem
          2. Solution
          3. Discussion
        13. Correlation Sets
          1. Problem
          2. Solution
          3. Discussion
            1. Creating message properties and aliases
            2. Creating correlation sets
            3. Initiating the conversation
            4. Correlating the messages
        14. Looping
          1. Problem
          2. Solution
          3. Discussion
            1. while loop
            2. repeatUntil loop
            3. forEach loop
            4. Preventing some children from executing
        15. Adding Human Tasks to a Business Process
          1. Problem
          2. Solution
          3. Discussion
            1. Implementations
        16. Invoking a RESTful Web Service from BPEL
          1. Problem
          2. Solution
          3. Discussion
        17. Summary
      3. 11. SOA Governance
        1. Introduction
        2. Assigning Roles
          1. Problem
          2. Solution
          3. Discussion
        3. Creating a SOA Roadmap
          1. Problem
          2. Solution
          3. Discussion
        4. Keeping Track of Your Services
          1. Problem
          2. Solution
          3. Discussion
        5. Determining a Data Ownership Scheme for Services
          1. Problem
          2. Solution
          3. Discussion
            1. Timed caches and distributed caches
            2. Messaging
        6. Handling Legacy Programs and Heterogeneity Within Your SOA
          1. Problem
          2. Solution
          3. Discussion
        7. Documenting Services
          1. Problem
          2. Solution
          3. Discussion
        8. Setting Up a Service Registry
          1. Problem
          2. Solution
          3. Discussion
            1. UDDI
            2. Getting jUDDI
            3. Deploying jUDDI on Tomcat
            4. Setting up the jUDDI JDBC connection
              1. Setting up Log4J
              2. Setting up MySQL database
              3. Setting up a Tomcat datasource
          4. See Also
        9. Packaging Related Services
          1. Problem
          2. Solution
          3. Discussion
        10. Retiring a Service
          1. Problem
          2. Solution
        11. Browsing a UDDI Registry
          1. Problem
          2. Solution
        12. Querying a UDDI Registry Programmatically
          1. Problem
          2. Solution
          3. Discussion
            1. Overview
            2. Testing the client
          4. See Also
        13. Understanding SOA ROI
          1. Problem
          2. Solution
          3. Discussion
            1. ROI in traditional software projects
            2. ROI in SOA
            3. ROI implications of building out services within traditional projects
            4. There’s no ROI in SOA
    7. IV. Interoperability and Quality of Service
      1. 12. Web Service Interoperability
        1. Introduction
        2. Dealing with Arrays
          1. Problem
          2. Solution
          3. Discussion
        3. Abstracting Addressing
          1. Problem
          2. Solution
          3. Discussion
            1. Endpoint references
            2. Message information headers
            3. Anonymous addressing
        4. Using Addressing in a Java Service
          1. Problem
          2. Solution
          3. Discussion
          4. See Also
        5. Explicitly Enabling Addressing on the Client
          1. Problem
          2. Solution
          3. Discussion
        6. Explicitly Disabling Addressing on the Client
          1. Problem
          2. Solution
          3. Discussion
          4. See Also
        7. Abstracting Addressing in the Transport Layer from WSDL
          1. Problem
          2. Solution
        8. Addressing Faults
          1. Problem
          2. Solution
          3. Discussion
        9. Creating a .NET Web Service Client in Visual Studio
          1. Problem
          2. Solution
          3. Discussion
        10. Creating a .NET Web Service Client in C#
          1. Problem
          2. Solution
          3. Discussion
        11. Creating a .NET Web Service
          1. Problem
          2. Solution
          3. Discussion
        12. Creating a Ruby Client for a Web Service
          1. Problem
          2. Solution
          3. Discussion
        13. Creating a Ruby Client for a .NET Service
          1. Problem
          2. Solution
          3. Discussion
            1. Using Ruby in Eclipse
        14. Conforming to the Basic Profile
          1. Problem
          2. Solution
          3. Discussion
        15. Automating Testing for Basic Profile Conformance
          1. Problem
          2. Solution
          3. Discussion
        16. Interoperability Best Practices
          1. Problem
          2. Solution
        17. Using Modular WSDLs
          1. Problem
          2. Solution
          3. Discussion
      2. 13. Quality of Service
        1. Introduction
          1. Quality-of-Service Specifications
            1. Reliability
            2. Metadata
            3. Transactions
          2. WS-* Specifications and Vendor Implementations
        2. Understanding Reliable Messaging
          1. Problem
          2. Solution
            1. Source and destination
            2. The WS-ReliableMessaging protocol
            3. WS-ReliableMessaging and WS-Addressing exchange
        3. Configuring a Java Web Service with Reliable Messaging
          1. Problem
          2. Solution
          3. Discussion
          4. See Also
        4. Configuring a Java Client with Reliable Messaging
          1. Problem
          2. Solution
          3. See Also
        5. Configuring a Java Web Service with Reliable Messaging on WebLogic
          1. Problem
          2. Solution
          3. Discussion
        6. Using a WebLogic Reliable Messaging Error Handler
          1. Problem
          2. Solution
      3. 14. Enterprise Service Bus
        1. Introduction
          1. Focus of This Chapter
        2. What Is ESB?
          1. Features of an ESB
            1. Web services support
            2. Adapters
            3. Invocation
            4. Mediation and protocol independence
            5. Routing
            6. Transformation
            7. Orchestration
            8. Security
          2. SOA Without an ESB
          3. Benefits of ESB
        3. ESB As a Set of Patterns
        4. JBI
          1. The JBI Architecture
            1. Service engines
            2. Binding components
            3. Normalized message router
            4. JBI runtime environment
          2. The Case Against JBI
        5. Commercial ESBs
          1. Oracle Service Bus
            1. OSB differentiating features
            2. Monitoring and service-level agreements
            3. Reporting
            4. Security
            5. Supported specifications
          2. Software AG/webMethods ESB
            1. Differentiating features
            2. Supported specifications
          3. TIBCO ActiveMatrix and BusinessWorks
            1. Event framework
            2. Grid-based architecture
            3. Supported specifications
        6. Open Source ESBs
          1. Mule
            1. Basic usage
            2. MuleForge
            3. Supported transports
            4. Deployment options
            5. Mule IDE
            6. SOA governance and management with Mule
          2. Apache ServiceMix
            1. Extensibility
            2. Deployment in ServiceMix
          3. OpenESB
            1. Monitoring OpenESB
            2. Project Fuji
        7. Summary
    8. Index
    9. About the Author
    10. Colophon
    11. SPECIAL OFFER: Upgrade this ebook with O’Reilly