SOA with Java: Realizing Service-Orientation with Java Technologies

SOA with Java: Realizing Service-Orientation with Java Technologies
by Thomas Erl,
Satadru Roy,
Philip Thomas,
Andre Tost

  • Foreword

    Acknowledgments

    Chapter 1: Introduction
    • 1.1 About This Book
      • Objectives of This Book
      • Who This Book Is For
      • What This Book Does Not Cover
    • 1.2 Prerequisite Reading
      • How This Book Is Organized
        • Part I: Fundamentals
          • Chapter 3: Fundamental SOA Concepts
          • Chapter 4: Basic Java Distributed Technologies
          • Chapter 5: Web-Based Service Technologies
          • Chapter 6: Building Web-Based Services with Java
        • Part II: Services
          • Chapter 7: Service-Orientation Principles with Java Web-Based Services
          • Chapter 8: Utility Services with Java
          • Chapter 9: Entity Services with Java
        • Part III: Service Composition and Infrastructure
          • Chapter 10: Task Services with Java
          • Chapter 11: Service Composition with Java
          • Chapter 12: ESB as SOA Infrastructure
        • Part IV: Appendices
          • Appendix A: Case Study Conclusion
          • Appendix B: Service-Orientation Principles Reference
          • Appendix C: SOA Design Patterns Reference
          • Appendix D: The Annotated SOA Manifesto
    • 1.3 How Principles and Patterns Are Used in This Book
    • 1.4 Symbols and Figures
    • 1.5 Additional Information
      • Updates, Errata, and Resources (www.servicetechbooks.com)
      • Referenced Specifications (www.servicetechspecs.com)
      • The Service Technology Magazine (www.servicetechmag.com)
      • Service-Orientation (www.serviceorientation.com)
      • What Is REST? (www.whatisrest.com)
      • What Is Cloud? (www.whatiscloud.com)
      • SOA and Cloud Computing Design Patterns (www.soapatterns.org, www.cloudpatterns.org)
      • SOA Certified (SOACP) Professional (www.soaschool.com)
      • Cloud Certified Professional (CCP) (www.cloudschool.com)
      • Big Data Science Certified Professional (BDSCP) (www.bigdatascienceschool.com)
      • Notification Service
  • Chapter 2: Case Study Examples
    • 2.1 How Case Study Examples Are Used
      • Style Characteristics
      • Relationship to Abstract Content
      • Code Samples
    • 2.2 Case Study Background: NovoBank
      • Technical Infrastructure
      • Automation Solutions
      • Business Obstacles and Goals
      • Future IT Roadmap
        • 1. Build Reusable Business Services
        • 2. Consolidate Information
        • 3. Improve Channel Experience
        • 4. Build Services Infrastructure
    • 2.3 Case Study Background: SmartCredit Co.
      • Technical Infrastructure
      • Automation Solutions
      • Business Goals
      • Future IT Roadmap

PART I: FUNDAMENTALS

  • Chapter 3: Fundamental SOA Concepts
    • 3.1 Basic Terminology and Concepts
      • Service-Oriented Computing
      • Service-Orientation
      • Service-Oriented Architecture (SOA)
      • SOA Manifesto
      • Services
      • Cloud Computing
      • IT Resources
      • Service Models
        • Agnostic Logic and Non-Agnostic Logic
      • Service Inventory
      • Service Portfolio
      • Service Candidate
      • Service Contract
      • Service-Related Granularity
      • Service Profiles
      • SOA Design Patterns
    • 3.2 Further Reading
  • Chapter 4: Basic Java Distributed Technologies
    • 4.1 Java Distributed Computing Basics
      • Java SE Architecture
      • Java EE Architecture
        • The Beginning of Java EE
      • Application Packaging and Deployment
        • Deployment Descriptors
      • Java EE Architectural Tiers
    • 4.2 Java Distributed Technologies and APIs
      • Java SE APIs
        • RMI
        • RMI / IIOP
        • JNDI
        • JDBC
      • Java EE APIs
        • Contexts and Dependency Injection
        • JTA
        • Java EE Connector Architecture
        • EJB
        • Session EJBs
        • Persistence Entities
        • Service-Orientation Principles and the EJB Model
        • JMS
        • Message-Driven Beans
        • Security in Java EE
    • 4.3 XML Standards and Java APIs
      • XML
      • XML Schema Definition
      • XSLT
      • JAXP
      • JAXB
    • 4.4 Building Services with Java Components
      • Components as Services
      • Application Protocols
      • Service Contracts
        • Location
        • Operations
        • Messages
        • Further Considerations
      • Components as Services and Service-Orientation
        • Standardized Service Contract
        • Service Loose Coupling
        • Service Abstraction
        • Service Discoverability
    • 4.5 Java Vendor Platforms
      • GlassFish Enterprise Server
      • IBM WebSphere Application Server
      • IBM WebSphere Application Server Community Edition
      • Oracle WebLogic Server
  • Chapter 5: Web-Based Service Technologies
    • 5.1 SOAP-Based Web Services
      • Extensibility of Web Services Standards (WS-*)
        • WS-Addressing
        • SOAP with Attachments (SwA)
        • WS-ReliableMessaging
        • WS-Transaction
        • WS-Security
        • WS-Policy
        • Web Services Distributed Management
      • Common Web Services Middleware
        • Enterprise Service Bus (ESB)
        • Orchestration
        • Management and Monitoring
        • Registries and Repositories
        • Service Construction and Assembly
    • 5.2 REST Services
      • HTTP Response Codes
      • Resources and Addresses
        • Service Request
        • Service Response
        • Service Request
        • Service Response
      • HTTP Methods
      • Resource Representations
      • The ACCEPT Header
  • Chapter 6: Building Web-Based Services with Java
    • 6.1 JAX-WS
      • SAAJ
      • Handlers
      • Web Services Engines and Toolkits
      • JAXR
    • 6.2 Java Implementations of WS-* Standards
      • Advanced Web Services Standards and Frameworks
      • Service Component Architecture
      • Spring-WS
    • 6.3 JAX-RS
      • Implementing JAX-RS
      • Implementing REST Services
      • Scalability
        • Statelessness
        • Uniform Contract
        • Cacheability
        • Addressability
      • Security
      • REST Service Support

PART II: SERVICES

  • Chapter 7: Service-Orientation Principles with Java Web-Based Services
    • 7.1 Service Reusability
      • Agnostic Functional Contexts
      • Highly Generic Service Logic
      • Generic and Extensible Service Contracts
      • Concurrent Access to Service Logic
    • 7.2 Standardized Service Contract
      • Top-Down vs. Bottom-Up
      • Mapping Between Java and WSDL
      • Wrapped Document/Literal Contracts
      • Implicit and Explicit Headers
        • Explicit Headers
        • Implicit Headers
        • No Headers
      • Data Mapping with REST
        • Conversion Between JSON and POJOs
        • Binary Data in Web Services
        • Binary Data in REST Services
      • Use of Industry Standards
    • 7.3 Service Loose Coupling
      • Separation of Contract and Implementation
      • Independent Functional Contexts
      • Service Consumer Coupling
    • 7.4 Service Abstraction
      • Abstracting Technology Details
      • Hiding Service Details
      • Document Constraints
    • 7.5 Service Composability
      • Runtime Environment Efficiency
      • Service Contract Flexibility
      • Standards-Based Runtime
    • 7.6 Service Autonomy
      • Well-Defined Functional Boundary
      • Runtime Environment Control
      • High Concurrency
    • 7.7 Service Statelessness
      • Orchestration Infrastructure
      • Session State
      • Storing State
    • 7.8 Service Discoverability
      • Design-Time Discoverability
      • Runtime Discoverability
      • Service Registries
  • Chapter 8: Utility Services with Java
    • 8.1 Inside the Java Utility Service
      • Architectural Considerations
      • Utility Service Taxonomy
    • 8.2 Utility Service Design and Implementation
      • Utility Service Design
      • Utility Services and Java Editions
        • Utility Services in Java SE
        • Utility Services in Java EE
      • Utility Services and Open-Source Frameworks
        • Spring Framework
        • Transaction Management
        • Data Access Objects
        • Object-Relational Mapping
        • JMS
        • JMX
        • JCA
        • Spring MVC
        • Hibernate
        • Commons Logging and Log4J
      • Utility Services as Web-Based Services
        • Sending XML Data as a String
        • Utilizing
        • Provider-Style Web Service Logic in JAX-WS
        • Building REST Utility Services
      • Testing Considerations
      • Packaging Considerations
    • 8.3 Utility Service Types
      • Omni Utility Services
        • Design Considerations
        • Service Implementation
        • Service Consumption
      • Resource Utility Services
        • Persistence/Data Access Resources
        • Messaging Resources
        • Transaction Resources
        • Design Considerations
        • Service Implementation
        • Service Consumption
      • Micro-Utility Services
        • Design Considerations
        • Service Implementation
        • Service Consumption
      • Wrapper Utility Services
        • Design Considerations
        • Service Implementation
        • Service Consumption
  • Chapter 9: Entity Services with Java
    • 9.1 Inside the Java Entity Service
      • Architectural Considerations
      • Domain Entities vs. Message Entities
      • Data Aggregation
      • Data Access Modes
      • Change Notifications
    • 9.2 Java Entity Service Design and Implementation
      • Entity Service Design
        • Designing Domain Entities and Message Entities
        • Designing Stateless Entity Services
        • Designing Business-Relevant Entity Services
        • Designing Generic Entity Services
        • Designing Aggregating Entity Services
      • Entity Service Implementation
        • Java Editions
      • Entity Services as Web-Based Services
      • Entity Web Services Using SOAP
      • REST Entity Services
        • Read-Only and Read-Write Resources
        • Resource Granularity
        • Resource Creation and Location
        • Request Message
        • Response Message
        • Resource Relationships
        • Request Message
        • Response Message
        • Request Message
        • Resource Collections
        • Request Message
        • Response Message
        • Aggregate Entities
        • Request Message
        • Response Message
        • Open-Source Frameworks
      • Testing Considerations
      • Java Packaging Considerations

PART III: SERVICE COMPOSITION AND INFRASTRUCTURE

  • Chapter 10: Task Services with Java
    • 10.1 Inside a Task Service
      • Performance Considerations
    • 10.2 Building Task Services
      • Implementation Considerations
      • Web-Based Task Services
        • Task Services with SOAP and WSDL
        • Task Services with REST
      • Testing Considerations
      • Packaging Considerations
  • Chapter 11: Service Composition with Java
    • 11.1 Inside Service Compositions
      • Service Composition Roles
      • Compositions and MEPs
      • Synchronous and Asynchronous Invocation
      • Service Level Agreements (SLAs)
    • 11.2 Java Service Composition Design and Implementation
      • Composition Logic: Coding vs. Orchestration
      • REST Service Composition Considerations
      • Composition Member Endpoints
      • Error Handling
      • Schema Type Reuse
      • Web-Based Services vs. Java Components
      • Packaging, Testing and Deploying Composed Services
    • 11.3 Service and Service Composition Performance Guidelines
      • Measuring Performance
      • Testing Performance
      • Caching
        • Data Grids
        • REST Caching
      • Scaling Out Services with State
      • Handling Failures
      • Parsing and Marshaling
  • Chapter 12: ESB as SOA Infrastructure
    • 12.1 Basic Traditional Messaging Frameworks
      • RPC vs. Messaging
        • Technology Coupling
        • Spatial Coupling
        • Temporal Coupling
        • Message Producers and Message Consumers
    • 12.2 Basic Service Messaging Frameworks
      • Basic Service Message Processing without ESBs
        • Message Routing without an ESB
        • Message Transformation without an ESB
      • Basic Service Message Processing with ESBs
        • Message Routing with an ESB
        • Message Transformation with an ESB
    • 12.3 Common ESB Features Relevant to SOA
      • Service Lookup and Invocation
      • Service Processing
      • Service Composition Support
      • REST API Management Support

PART IV: APPENDICES

  • Appendix A: Case Study Conclusion
    • A.1 NovoBank
    • A.2 SmartCredit Co.
  • Appendix B: Service-Orientation
    • Principles Reference
  • Appendix C: SOA Design Patterns Reference
  • Appendix D: The Annotated SOA Manifesto
    • About the Authors
    • Thomas Erl
    • Andre Tost
    • Satadru Roy
    • Philip Thomas
  • About the Foreword Contributor
    • Mark Little
  • About the Contributors
    • Raj Balasubramanian
    • David Chou
    • Thomas Plunkett
  • Index