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