abstraction. See Service Abstraction design principle
ACC (Applet and Application Client Container), 42
Agnostic Capability design pattern, 427
Agnostic Context design pattern, 428
agnostic functional contexts, 140
agnostic logic, defined, 31
Agnostic Sub-Controller design pattern, 429
annotated SOA Manifesto, 28, 38, 520-532
annotations
defined, 54
Java EE (Java Platform, Enterprise Edition), 49-59
JPA (Java Persistence API), 53-54
JTA (Java Transactions API), 50-51
Java SE (Java Platform, Standard Edition), 46-49
JDBC (Java Database Connectivity), 49
JNDI (Java Naming and Directory Interface), 48
RMI (Remote Method Invocation), 46-47
Applet and Application Client Container (ACC), 42
application programming interfaces. See APIs
application servers
architecture
Java EE (Java Platform, Enterprise Edition), 41-44
Java SE (Java Platform, Standard Edition), 41
messaging
asynchronous communications, 135-136
asynchronous invocation, 338-339
Asynchronous Queuing design pattern, 384, 430
Atomic Service Transaction design pattern, 431
availability, 369
Big Data Science Certified Professional (BDSCP), 9
binary data
bindings, 153
Brokered Authentication design pattern, 432
cacheability, 131
Canonical Expression design pattern, 433
Canonical Protocol design pattern, 434
Canonical Resources design pattern, 435
Canonical Schema Bus compound pattern, 437
Canonical Schema design pattern, 436
Canonical Versioning design pattern, 438
Capability Composition design pattern, 439
capability granularity, defined, 34
Capability Recomposition design pattern, 440
capacity, 369
NovoBank
SmartCredit Co.
CCP (Cloud Certified Professional), 9
Cloud Certified Professional (CCP), 9
cloud computing, defined, 29-30
Cloud Computing: Concepts, Technology & Architecture, 196
Common Object Request Broker Architecture (CORBA), 47-48
Commons Logging, 231
Compatible Change design pattern, 441
Compensating Service Transaction design pattern, 442
components
symbols for, 29
composability. See Service Composability design principle
Composition Autonomy design pattern, 443
composition controllers, 336
composition initiators, 337
composition sub-controllers, 337
compound patterns
Canonical Schema Bus, 437
Enterprise Service Bus, 95-96, 461
Federated Endpoint Layer, 466
Official Endpoint, 480
Orchestration, 481
Three-Layer Inventory, 512
Uniform Contract, 515
Concurrent Contracts design pattern, 444
CONNECT method, HTTP, 107
Connection API, 279
constraint granularity, defined, 34
Content Negotiation design pattern, 445
contexts and dependency injection, 49-50
Contract Centralization design pattern, 446
Contract Denormalization design pattern, 447
cookies, 198
coupling. See Service Loose Coupling design principle
CORBA (Common Object Request Broker Architecture), 47-48
Cross-Domain Utility Layer design pattern, 448
DAOs (data access objects), 230
data access objects (DAOs), 230
Data Confidentiality design pattern, 449
Data Format Transformation design pattern, 392, 450
data granularity, defined, 34
Data Model Transformation design pattern, 392, 451
Data Origin Authentication design pattern, 452
data transfer objects (DTOs), 280
Decomposed Capability design pattern, 453
Decoupled Contract design pattern, 454
DELETE method, HTTP, 107
deployment
of Java EE applications, 44-45
design
of micro-utility services, 253
of omni utility services, 241
of resource utility services, 249-251
of wrapper utility services, 258-259
design patterns
Agnostic Capability, 427
Agnostic Context, 428
Agnostic Sub-Controller, 429
Asynchronous Queuing, 384, 430
Atomic Service Transaction, 431
Brokered Authentication, 432
Canonical Expression, 433
Canonical Protocol, 434
Canonical Resources, 435
Canonical Schema, 436
Canonical Versioning, 438
Capability Composition, 439
Capability Recomposition, 440
Compatible Change, 441
Compensating Service Transaction, 442
Composition Autonomy, 443
Concurrent Contracts, 444
Content Negotiation, 445
Contract Centralization, 446
Contract Denormalization, 447
Cross-Domain Utility Layer, 448
Data Confidentiality, 449
Data Format Transformation, 392, 450
Data Model Transformation, 392, 451
Data Origin Authentication, 452
Decomposed Capability, 453
Decoupled Contract, 454
Direct Authentication, 455
Distributed Capability, 456
Domain Inventory, 457
Dual Protocols, 458
Endpoint Redirection, 459
Enterprise Inventory, 460
Entity Abstraction, 462
Entity Linking, 463
Event-Driven Messaging, 464
Exception Shielding, 465
File Gateway, 467
Functional Decomposition, 468
Idempotent Capability, 469
Intermediate Routing, 392, 470
Inventory Endpoint, 471
Legacy Wrapper, 472
Lightweight Endpoint, 473
Logic Centralization, 474
Message Screening, 475
Messaging Metadata, 476
Metadata Centralization, 477
Multi-Channel Endpoint, 478
Non-Agnostic Context, 479
Partial State Deferral, 482
Partial Validation, 483
Policy Centralization, 484
Process Abstraction, 485
Process Centralization, 486
Proxy Capability, 488
Redundant Implementation, 489
Reliable Messaging, 490
Reusable Contract, 491
Rules Centralization, 492
Schema Centralization, 493
Service Agent, 494
Service Callback, 496
Service Data Replication, 497
Service Decomposition, 498
Service Encapsulation, 499
Service Façade, 500
Service Grid, 501
Service Instance Routing, 502
Service Layers, 503
Service Messaging, 504
Service Normalization, 505
Service Perimeter Guard, 506
Service Refactoring, 507
State Messaging, 508
Termination Notification, 511
Trusted Subsystem, 513
UI Mediator, 514
Utility Abstraction, 516
Validation Abstraction, 517
Version Identification, 518
design principles
Service Abstraction, 184-185, 336
profile, 414
Service Autonomy, 194
profile, 417
Service Composability, 189-190, 336
Service Discoverability, 204
Service Loose Coupling, 176-177
profile, 413
Service Reusability
Service Statelessness, 197
Standardized Service Contract, 34, 151
Direct Authentication design pattern, 455
disconnected approach (data access), 268
discoverability. See Service Discoverability design principle
Distributed Capability design pattern, 456
Document Object Model (DOM), 63
document-style SOAP messaging, 87
DOM (Document Object Model), 63
domain entities
message entities versus, 265-266
Domain Inventory design pattern, 457
DTD (XML), 62
DTOs (data transfer objects), 280
Dual Protocols design pattern, 458
EAR (enterprise archive), 44, 239
ebXML (Electronic Business using XML), 120-121
EJBs (Enterprise JavaBeans), 43, 51-52
Electronic Business using XML (ebXML), 120-121
encryption, 134
Endpoint Redirection design pattern, 459
endpoints, composition member, 344
enterprise archive (EAR), 44, 239
Enterprise Inventory design pattern, 460
Enterprise JavaBeans (EJBs), 43, 51-52
entity, 281
Enterprise Service Bus (ESB), 95-96, 461
service message processing with, 392-396
service message processing without, 389-391
Entity Abstraction design pattern, 462
Entity Linking design pattern, 463
entity services
as Web-based services, 282-283
defined, 31
EntityManager class, 54
error handling, 345
ESB (Enterprise Service Bus), 95-96, 461
service message processing with, 392-396
service message processing without, 389-391
Event-Driven Messaging design pattern, 464
eventing, defined, 240
Exception Shielding design pattern, 465
Extensible Markup Language (XML), 59-61
Extensible Stylesheet Language Transformations (XSLT), 63
Federated Endpoint Layer compound pattern, 466
figures, 7
File Gateway design pattern, 467
functional boundaries, 194
functional context dependencies, 140-141, 179-180
Functional Decomposition design pattern, 468
generic entity services, 273-275
generic service contracts, 144-145
generic service logic, 141-144
GET method, HTTP, 107
GlassFish Enterprise Server, 74-75
HEAD method, HTTP, 107
HTTP
characteristics, 67
CONNECT method, 107
DELETE method, 107
GET method, 107
HEAD method, 107
OPTIONS method, 107
POST method, 107
PUT method, 107
TRACE method, 107
IBM WebSphere Application Server, 75-77
IBM WebSphere Application Server Community Edition, 78
Idempotent Capability design pattern, 469
Intermediate Routing design pattern, 392, 470
Inventory Endpoint design pattern, 471
IT resources, defined, 30
JAAS (Java Authentication and Authorization Service), 58-59
JAF (JavaBeans Activation Framework), 165
JAR (Java archive), 239
Java
WS-* standards implementation, 122-124
Java API for RESTful Web Services. See JAX-RS standard
Java API for XML Binding (JAXB), 64
Java API for XML Processing (JAXP), 63-64
Java API for XML Registries (JAXR), 120-121
Java API for XML Web Services. See JAX-WS standard
Java API for XML-based RPC (JAX-RPC) standard, 112, 152-153
Java Archive (JAR), 239
Java Authentication and Authorization Service (JAAS), 58-59
Java Database Connectivity (JDBC)
API, 49
Java Development Kit (JDK), 41
Java EE Connector Architecture (JCA), 51, 231
in Spring framework, 231
Java EE (Java Platform, Enterprise Edition)
contexts and dependency injection, 49-50
EJBs (Enterprise JavaBeans), 51-52
JCA (Java EE Connector Architecture), 51
JMS (Java Message Service), 56-58
JPA (Java Persistence API), 53-54
JTA (Java Transactions API), 50-51
application server
Java ME (Java Platform, Micro Edition), defined, 40
Java Message Service (JMS), 56-58
characteristics, 67
Java Naming and Directory Interface (JNDI), 48
Java Persistence API (JPA), 53-54
Java runtime environment (JRE), 41
Java SE (Java Platform, Standard Edition)
JDBC (Java Database Connectivity), 49
JNDI (Java Naming and Directory Interface), 48
RMI (Remote Method Invocation), 46-47
architecture, 41
defined, 40
utility services, 226
Java Transaction Processing, 51
Java Transactions API (JTA), 50-51
Java Virtual Machine (JVM), 41
JavaBeans Activation Framework (JAF), 165
JavaScript Object Notation (JSON), 108
conversion with POJOs, 161-162
JAXB (Java API for XML Binding), 64
JAXP (Java API for XML Processing), 63-64
JAXR (Java API for XML Registries), 120-121
JAX-RPC (Java API for XML-based RPC) standard, 112, 152-153
JAX-RS (Java API for RESTful Web Services) standard, 124-136
goals, 125
JAX-WS (Java API for XML Web Services) standard, 112-121, 153
JCA (Java EE Connector Architecture), 51, 231
JDBC (Java Database Connectivity), 49
API, 49
JDK (Java Development Kit), 41
JMS (Java Message Service), 56-58
characteristics, 67
JMX, 230
JNDI (Java Naming and Directory Interface), 48
JPA (Java Persistence API), 53-54
JRE (Java runtime environment), 41
JSON (JavaScript Object Notation), 108
conversion with POJOs, 161-162
JTA (Java Transactions API), 50-51
JVM (Java Virtual Machine), 41
layered SOA model, 27
Legacy Wrapper design pattern, 472
Lightweight Endpoint design pattern, 473
link relation, 106
literal, defined, 153
literal SOAP messaging, 87
load testing, 370
optimistic, 281
pessimistic, 281
Log4J, 231
Logic Centralization design pattern, 474
logical handlers, 118
loose coupling. See Service Loose Coupling design principle
Management of Web Services (MOWS) specification, 95
Management Using Web Services (MUWS) specification, 95
MDBs (message-driven beans), 58
MEPs (message exchange patterns), 337-338
message entities
domain entities versus, 265-266
message exchange patterns (MEPs), 337-338
Message Screening design pattern, 475
message-driven beans (MDBs), 58
messages
parsing and marshaling, 376-378
processing
in resource utility services, 248
RPC (remote procedure calls) versus, 381-386
traditional frameworks, 380-386
Messaging Metadata design pattern, 476
Metadata Centralization design pattern, 477
micro-utility services, 253-256
defined, 220
middleware
ESB (Enterprise Service Bus), 95-96
MOWS (Management of Web Services) specification, 95
Multi-Channel Endpoint design pattern, 478
MUWS (Management Using Web Services) specification, 95
NFR (non-functional requirements), defined, 213
Non-Agnostic Context design pattern, 479
non-agnostic logic, defined, 31
non-functional requirements (NFR), defined, 213
NovoBank. See case study examples, NovoBank
object-relational mapping, 230
Official Endpoint compound pattern, 480
omni utility services, 240-247
defined, 220
open-source frameworks
REST entity service, 302
optimistic approach (data access), 268
OPTIONS method, HTTP, 107
Orchestration compound pattern, 481
orchestration infrastructure, 198
packaging
entity services, 303
task services, 334
utility services, 239
Partial State Deferral design pattern, 482
Partial Validation design pattern, 483
performance
testing, 370
pessimistic locking, 281
Plain Old Java Objects (POJOs), 43
policies, defined, 94
Policy Centralization design pattern, 484
POST method, HTTP, 107
Prentice Hall Service Technology Series from Thomas Erl, 7-8
Process Abstraction design pattern, 485
Process Centralization design pattern, 486
Protocol Bridging design pattern, 392, 487
protocol handlers, 118
Proxy Capability design pattern, 488
publish/subscribe model, 56-57
PUT method, HTTP, 107
recovery from failure, 375-376
Redundant Implementation design pattern, 489
Reliable Messaging design pattern, 490
Remote Method Invocation (RMI), 46-47
remote procedure calls (RPC), 87
resource representations, 108-109
resource utility services, 247-252
defined, 220
resource utilization, 369
response codes (HTTP), 102-103
error handling, 345
Reusable Contract design pattern, 491
RMI (Remote Method Invocation), 46-47
characteristics, 67
routing messages
with ESBs, 392
RPC (remote procedure calls), 87
Rules Centralization design pattern, 492
runtime discoverability, 205-207
runtime environments
control, 195
standards-based, 193
SAAJ (SOAP with Attachments API for Java), 115-118
SAX (Simple API for XML), 63
SCA (Service Component Architecture), 123-124
scalability
Schema Centralization design pattern, 493
SDO (Service Data Objects) specification, 123-124
security
SEI (service endpoint interface), 113
services
defined, 29
local, invocation, 360
message processing
Service Abstraction design principle, 25, 184-185, 336
profile, 414
Service Agent design pattern, 494
Service Autonomy design principle, 25, 194
profile, 417
Service Broker compound pattern, 392, 495
Service Callback design pattern, 496
service candidates, defined, 33
Service Component Architecture (SCA), 123-124
Service Composability design principle, 25, 189-190, 336
service composition
initiators, 337
members versus controllers, 190, 336
and MEPs (message exchange patterns), 337-338
sub-controllers, 337
service consumer coupling, 180-183
flexibility, 192
separation from implementation, 177-179
standardized, 71
Service Data Objects (SDO) specification, 123-124
Service Data Replication design pattern, 497
Service Decomposition design pattern, 498
Service Discoverability design principle, 25, 204
Service Encapsulation design pattern, 499
service endpoint interface (SEI), 113
service endpoint selection with ESBs, 397
Service Façade design pattern, 500
service granularity, defined, 34
Service Grid design pattern, 501
Service Instance Routing design pattern, 502
service interface, 222
service inventory, defined, 32
service inventory blueprints, 32
Service Layers design pattern, 503
service level agreements (SLAs), 339-340
Service Loose Coupling design principle, 25, 176-177
profile, 413
Service Messaging design pattern, 504
service models, defined, 30-31
Service Normalization design pattern, 505
Service Perimeter Guard design pattern, 506
service portfolio, defined, 32-33
service portfolio management, defined, 33
service processing with ESBs, 399-400
service profiles, defined, 35-36
Service Refactoring design pattern, 507
service registries, 99-100, 208
Service Reusability design principle, 25
Service Statelessness design principle, 25, 197
service-orientation
EJBs (Enterprise JavaBeans) and, 55-56
Service-Oriented Architecture: Concepts, Technology, and Design, 4, 38
service-oriented architecture (SOA), defined, 27-28
service-oriented computing, defined, 22-24, 28
session EJBs (Enterprise JavaBeans), 52-53
Simple API for XML (SAX), 63
Simple Object Access Protocol. See SOAP
SLAs (service level agreements), 339-340
SmartCredit Co. See case study examples, SmartCredit Co.
SOA (service-oriented architecture), defined, 27-28
SOA Certified Professional (SOACP), 9
SOA Design Patterns, 4, 38, 426
SOA Governance: Governing Shared Services On-Premise and in the Cloud, 38
SOA Principles of Service Design, 3, 38, 140, 410
SOA with REST: Principles, Patterns & Constraints for Building Enterprise Solutions with REST, 4, 82, 101, 343, 426
SOACP (SOA Certified Professional), 9
soak testing, 370
SOAP (Simple Object Access Protocol)
defined, 82
no headers, 159
SOAP with Attachments API for Java (SAAJ), 115-118
SOAP with Attachments (SwA), 90-91
SOAP-based Web services, 82-101
error handling, 345
Java components versus, 359-360
packaging, 363
task services as, 320
spatial coupling, 382
Spring MVC, 231
Spring-WS framework, 124
Standardized Service Contract design principle, 25, 34, 151
standards-based runtime environment, 193
State Messaging design pattern, 508
State Repository design pattern, 374, 509
stateful services, scalability, 374-375
Stateful Services design pattern, 375, 510
stateless entity services, 272
statelessness, 131
stress testing, 370
supertypes, 143
SwA (SOAP with Attachments), 90-91
symbols
for components, 29
legend, 7
synchronous invocation, 338-339
task services
as REST services, 324
as SOAP-based Web services, 320
defined, 31
taxonomy, utility service, 220-221
technology coupling, 382
technology detail abstraction, 185
Termination Notification design pattern, 511
testing
utility services, 238
Three-Layer Inventory compound pattern, 512
throughput, 369
TRACE method, HTTP, 107
transaction
management, 229
resources, 249
support, 135
transactionality, 122
transformation
without ESBs, 391
Trusted Subsystem design pattern, 513
UDDI (Universal Description, Discovery, and Integration), 83
UI Mediator design pattern, 514
Uniform Contract compound pattern, 515
uniform contracts, 131
Uniform Resource Identifiers (URIs), 61
Uniform Resource Locations (URLs), 103-106
Universal Description, Discovery, and Integration (UDDI), 83
URIs (Uniform Resource Identifiers) for namespaces, 61
URLs (Uniform Resource Locations), REST services, 103-106
UTF-8 encoding, 60
Utility Abstraction design pattern, 516
utility services
and open-source frameworks, 229-231
as a Web-based service
defined, 31
in Java SE, 226
packaging, 239
testing, 238
Validation Abstraction design pattern, 517
validation constraint granularity, 34
Version Identification design pattern, 518
WAR (Web archive), 239
WAS (WebSphere Application Server), 75-77
WAS-CE (WebSphere Application Server Community Edition), 78
Web archive (WAR), 239
Web container (Java EE architecture), 42-43
Web Profile (Java EE), 43
Web Service Contract Design & Versioning for SOA, 4, 82
Web services. See SOAP-based Web services
Web Services Description Language (WSDL), 83-88
Web Services Distributed Management (WSDM) specification, 95
Web services standards. See WS-* standards
Web sites
www.arcitura.com/notation, 7
www.bigdatascienceschool.com, 9
www.cloudpatterns.org, 8
www.cloudschool.com, 9
www.serviceorientation.com, 3, 8, 38, 140, 190, 410
www.servicetechbooks.com, 4, 8, 9, 38
www.servicetechmag.com, 8
www.servicetechspecs.com, 3, 8, 100, 110
www.soa-manifesto.com, 3, 28, 38, 520
www.soa-manifesto.org, 28, 520
www.soapatterns.org, 3, 8, 426
www.soaprinciples.com, 410
www.soaschool.com, 9
www.whatiscloud.com, 8
WebSphere Application Server Community Edition (WAS-CE), 78
WebSphere Application Server (WAS), 75-77
workload characterization, 370
wrapped document/literal contracts, 153-154
wrapper utility services, 256-260
defined, 221
SOAP-based Web services and, 88-95
WS-Addressing standard, 89-90, 122
WS-AtomicTransaction standard, 93, 122
WS-BusinessActivity standard, 93
WS-Coordination standard, 93, 122
WSDL (Web Services Description Language), 83-88
WSDM (Web Services Distributed Management) specification, 95
WS-ReliableMessaging standard, 91-92, 122, 339
WS-Security standard, 93-94, 122, 134
WS-Transaction standard, 92-93
XML (Extensible Markup Language), 59-61
sending in utility services, 232-234
sending with JAX-WS standard, 234-236
XSLT (Extensible Stylesheet Language Transformations), 63