Introduction |
|
1 | (8) |
I Web Services Basics |
|
|
1 Web Services Overview and Service-Oriented Architectures |
|
|
9 | (22) |
|
|
10 | (3) |
|
|
11 | (1) |
|
|
12 | (1) |
|
Service-Oriented Architectures |
|
|
13 | (4) |
|
|
15 | (2) |
|
SOA and Web Services: Related but Distinct |
|
|
17 | (1) |
|
|
17 | (1) |
|
Why Do We Need Web Services? |
|
|
18 | (4) |
|
|
18 | (1) |
|
|
19 | (1) |
|
|
20 | (1) |
|
What Makes a Good Web Service? |
|
|
21 | (1) |
|
The Web Service Opportunity |
|
|
22 | (3) |
|
|
22 | (2) |
|
|
24 | (1) |
|
Integration of Human Interaction with Systems: B2C |
|
|
24 | (1) |
|
|
25 | (1) |
|
Web Services Interoperability Stack |
|
|
26 | (4) |
|
|
27 | (1) |
|
|
28 | (1) |
|
|
28 | (1) |
|
Quality of Experience Layer |
|
|
29 | (1) |
|
|
29 | (1) |
|
Understanding the Web Services Interoperability Stack |
|
|
29 | (1) |
|
|
30 | (1) |
|
|
31 | (80) |
|
Document- Versus Data-Centric XML |
|
|
32 | (3) |
|
|
32 | (1) |
|
|
33 | (1) |
|
|
34 | (1) |
|
|
35 | (9) |
|
|
35 | (1) |
|
|
36 | (2) |
|
|
38 | (4) |
|
|
42 | (2) |
|
|
44 | (1) |
|
|
44 | (7) |
|
|
46 | (1) |
|
|
47 | (2) |
|
Namespace-Prefixed Attributes |
|
|
49 | (2) |
|
|
51 | (27) |
|
Well-Formedness and Validity |
|
|
51 | (1) |
|
|
52 | (2) |
|
Associating Schemas with Documents |
|
|
54 | (1) |
|
|
55 | (4) |
|
|
59 | (3) |
|
The Purchase Order Schema |
|
|
62 | (1) |
|
Global Versus Local Elements and Attributes |
|
|
63 | (1) |
|
|
64 | (6) |
|
Advanced Schema Reusability |
|
|
70 | (8) |
|
|
78 | (1) |
|
|
78 | (29) |
|
|
78 | (3) |
|
Data-Oriented XML Processing |
|
|
81 | (4) |
|
SAX-Based checkInvoice ( ) |
|
|
85 | (6) |
|
DOM-Based checklnvoice ( ) |
|
|
91 | (5) |
|
JAXB-Based checkInvoice ( ) |
|
|
96 | (9) |
|
|
105 | (2) |
|
|
107 | (2) |
|
|
109 | (2) |
|
|
111 | (56) |
|
Simple Object Access Protocol (SOAP) |
|
|
112 | (2) |
|
|
113 | (1) |
|
Doing Business with SkatesTown |
|
|
114 | (3) |
|
Inventory Check Web Service |
|
|
117 | (3) |
|
Choosing a Web Service Engine |
|
|
117 | (1) |
|
|
117 | (1) |
|
|
118 | (1) |
|
|
118 | (2) |
|
|
120 | (1) |
|
The Structure of the Spec |
|
|
120 | (1) |
|
The SOAP Messaging Framework |
|
|
121 | (5) |
|
|
123 | (2) |
|
|
125 | (1) |
|
|
126 | (1) |
|
|
126 | (6) |
|
The Need for Intermediaries |
|
|
127 | (1) |
|
Transparent and Explicit Intermediaries |
|
|
128 | (1) |
|
|
129 | (1) |
|
Forwarding and Active Intermediaries |
|
|
130 | (1) |
|
Rules for Intermediaries and Headers |
|
|
130 | (2) |
|
|
132 | (1) |
|
The SOAP Processing Model |
|
|
132 | (1) |
|
|
133 | (1) |
|
Processing Headers and Bodies |
|
|
134 | (1) |
|
Faults: Error Handling in SOAP |
|
|
134 | (7) |
|
|
135 | (3) |
|
|
138 | (3) |
|
Objects in XML: The SOAP Data Model |
|
|
141 | (7) |
|
|
141 | (2) |
|
|
143 | (5) |
|
|
148 | (3) |
|
|
149 | (2) |
|
XML, Straight Up: Document-Style SOAP |
|
|
151 | (1) |
|
|
151 | (1) |
|
The Transport Binding Framework |
|
|
152 | (8) |
|
|
153 | (4) |
|
|
157 | (1) |
|
|
158 | (1) |
|
|
159 | (1) |
|
Using SOAP to Send Binary Data |
|
|
160 | (3) |
|
SOAP with Attachments and DIME |
|
|
160 | (2) |
|
|
162 | (1) |
|
Small-Scale SOAP, Big-Time SOAP |
|
|
163 | (2) |
|
|
165 | (1) |
|
|
165 | (2) |
|
4 Describing Web Services |
|
|
167 | (66) |
|
Why Service Descriptions? |
|
|
167 | (1) |
|
Role of Service Description in a Service-Oriented Architecture |
|
|
168 | (1) |
|
|
169 | (2) |
|
|
169 | (1) |
|
Nonfunctional Description |
|
|
170 | (1) |
|
|
170 | (1) |
|
History of Interface Definition Languages (IDLs) |
|
|
171 | (2) |
|
Web Services Description Language (WSDL) |
|
|
173 | (40) |
|
|
174 | (2) |
|
Parts of the WSDL Language |
|
|
176 | (3) |
|
Structure of a WSDL Document: Definitions 178 |
|
|
|
|
179 | (1) |
|
|
180 | (1) |
|
|
180 | (1) |
|
|
181 | (3) |
|
|
184 | (2) |
|
|
186 | (4) |
|
|
190 | (1) |
|
|
191 | (1) |
|
|
192 | (1) |
|
|
192 | (3) |
|
Exploring More WSDL Features |
|
|
195 | (6) |
|
|
201 | (4) |
|
Rounding Out WSDL Bindings |
|
|
205 | (5) |
|
|
210 | (3) |
|
A Sketch of How WSDL Maps to Java |
|
|
213 | (1) |
|
Nonfunctional Descriptions in WSDL |
|
|
214 | (9) |
|
|
214 | (2) |
|
|
216 | (4) |
|
|
220 | (1) |
|
|
220 | (3) |
|
Standardizing WSDL: W3C and WSDL 2.0 |
|
|
223 | (7) |
|
|
223 | (1) |
|
|
224 | (5) |
|
A Complete WSDL 2.0 Description |
|
|
229 | (1) |
|
|
230 | (1) |
|
|
231 | (2) |
|
5 Implementing Web Services with Apache Axis |
|
|
233 | (74) |
|
|
234 | (2) |
|
JAX-RPC, JAXM/SAAJ, and JAXB |
|
|
234 | (1) |
|
Current State of the Project |
|
|
235 | (1) |
|
|
236 | (7) |
|
Handlers and Chains: Concepts |
|
|
236 | (2) |
|
Server-Side Message Processing |
|
|
238 | (2) |
|
Client-Side Message Processing |
|
|
240 | (2) |
|
The MessageContext and Its Many Uses |
|
|
242 | (1) |
|
The Message APIs and SAAJ |
|
|
243 | (3) |
|
A Message by Any Other Name |
|
|
244 | (1) |
|
Accessing the SOAP Envelope, Bodies, and Headers |
|
|
244 | (2) |
|
|
246 | (12) |
|
|
246 | (1) |
|
Using the Call Object for Dynamic Invocation |
|
|
247 | (6) |
|
Using Stubs and WSDL2Java |
|
|
253 | (3) |
|
Holders: Mapping inout/out Parameters to Java |
|
|
256 | (2) |
|
Web Service Deployment Descriptor (WSDD) |
|
|
258 | (5) |
|
|
259 | (1) |
|
|
260 | (1) |
|
|
261 | (1) |
|
|
262 | (1) |
|
|
263 | (12) |
|
|
263 | (1) |
|
|
264 | (3) |
|
Deploying Services and the AdminClient |
|
|
267 | (1) |
|
Getting at the MessageContext |
|
|
268 | (2) |
|
Service Lifecycle and Scopes |
|
|
270 | (2) |
|
Sessions on the Server Side |
|
|
272 | (1) |
|
Using WSDL2Java to Generate Services |
|
|
272 | (1) |
|
Generating WSDL for Your Services |
|
|
273 | (2) |
|
A Guide to Web Service Styles |
|
|
275 | (4) |
|
|
275 | (1) |
|
|
276 | (1) |
|
|
277 | (1) |
|
|
278 | (1) |
|
From XML to Java and Back Again: The Axis Type-Mapping System |
|
|
279 | (9) |
|
|
279 | (2) |
|
|
281 | (2) |
|
Default Type Mapping and XML/Java Naming |
|
|
283 | (1) |
|
Custom Serializers and Deserializers |
|
|
284 | (2) |
|
Using the MessageElement XML/Object APIs |
|
|
286 | (2) |
|
When Things Go Wrong: Faults and Exceptions |
|
|
288 | (3) |
|
|
288 | (1) |
|
|
289 | (2) |
|
|
291 | (1) |
|
|
291 | (1) |
|
|
292 | (5) |
|
The SkatesTown EmailHandler |
|
|
292 | (3) |
|
The SkatesTown GlobalHandler |
|
|
295 | (2) |
|
|
297 | (1) |
|
Using the Authentication/Authorization Handlers |
|
|
297 | (1) |
|
Understanding Axis Transports |
|
|
298 | (2) |
|
|
298 | (1) |
|
|
299 | (1) |
|
Transports Included with Axis |
|
|
299 | (1) |
|
|
300 | (1) |
|
No API Is an Island: Axis and Its Environment |
|
|
300 | (1) |
|
Commons-Discovery and Obtaining Resources |
|
|
300 | (1) |
|
|
300 | (1) |
|
|
301 | (1) |
|
|
301 | (1) |
|
Development/Debugging Tools |
|
|
301 | (3) |
|
|
301 | (1) |
|
|
301 | (2) |
|
Using tcpmon and SOAPMonitor |
|
|
303 | (1) |
|
Axis Futures: A Quick Tour |
|
|
304 | (1) |
|
Participating in the Axis Community |
|
|
305 | (1) |
|
|
305 | (1) |
|
|
306 | (1) |
|
6 Discovering Web Services |
|
|
307 | (40) |
|
What Is Service Discovery? |
|
|
307 | (3) |
|
Role of Service Discovery in a Service-Oriented Architecture |
|
|
307 | (1) |
|
Service Discovery Mechanisms |
|
|
308 | (1) |
|
Service Discovery at Design Time and Runtime |
|
|
309 | (1) |
|
|
310 | (1) |
|
UDDI (Universal Description, Discovery, and Integration) |
|
|
310 | (33) |
|
|
311 | (14) |
|
|
325 | (10) |
|
What's New in UDDI Version 3.0 |
|
|
335 | (2) |
|
|
337 | (6) |
|
Other Service Discovery Methods |
|
|
343 | (1) |
|
|
343 | (1) |
|
|
343 | (1) |
|
|
344 | (1) |
|
|
344 | (3) |
II Enterprise Web Services |
|
|
|
347 | (36) |
|
|
347 | (7) |
|
|
348 | (1) |
|
|
348 | (2) |
|
Roles: Development, Assembly, and Deployment |
|
|
350 | (1) |
|
Benefits of Using Web Services with J2EE |
|
|
351 | (2) |
|
|
353 | (1) |
|
|
354 | (21) |
|
|
355 | (3) |
|
|
358 | (2) |
|
|
360 | (1) |
|
Exposing the EJBs via Axis |
|
|
361 | (2) |
|
WebSphere Deployment Process |
|
|
363 | (1) |
|
|
363 | (4) |
|
Configuring Axis to Invoke the SkatesService Session Bean |
|
|
367 | (8) |
|
|
375 | (1) |
|
Using JSR 109: Implementing Enterprise Web Services |
|
|
375 | (6) |
|
Step 1: Creating the WSDL File |
|
|
376 | (1) |
|
Step 2: Creating the Deployment Descriptors |
|
|
376 | (2) |
|
Step 3: Assembling the Application Files |
|
|
378 | (1) |
|
Step 4: Enabling the EAR File for Web Services |
|
|
379 | (1) |
|
Step 5: Deploying the Application |
|
|
379 | (1) |
|
|
380 | (1) |
|
|
381 | (1) |
|
|
381 | (1) |
|
|
381 | (2) |
|
8 Web Services and Stateful Resources |
|
|
383 | (62) |
|
|
384 | (1) |
|
|
384 | (1) |
|
|
385 | (1) |
|
|
385 | (2) |
|
|
387 | (8) |
|
Cardinality ofWeb Services and WS-Resources |
|
|
387 | (1) |
|
|
388 | (3) |
|
|
391 | (4) |
|
Modeling Resource Properties |
|
|
395 | (17) |
|
What Is a Resource Property? |
|
|
395 | (4) |
|
|
399 | (1) |
|
Resource Property Operations |
|
|
399 | (13) |
|
Rounding Out the POPortType |
|
|
412 | (1) |
|
|
412 | (22) |
|
Base Notification Concepts and Roles |
|
|
413 | (2) |
|
Subscribing for Notification |
|
|
415 | (4) |
|
The Subscription WS-Resource |
|
|
419 | (1) |
|
|
420 | (8) |
|
Resource Properties of a Notification Producer |
|
|
428 | (1) |
|
The Other Notification Producer Operation: GetCurrentMessage |
|
|
429 | (1) |
|
Notification of Value Changes on Resource Properties |
|
|
430 | (2) |
|
|
432 | (1) |
|
|
433 | (1) |
|
|
434 | (7) |
|
|
435 | (1) |
|
|
436 | (3) |
|
Initializing Termination Time |
|
|
439 | (1) |
|
Notification ofWS-Resource Termination |
|
|
440 | (1) |
|
Other WS-Resource Framework Specifications |
|
|
441 | (2) |
|
|
442 | (1) |
|
|
442 | (1) |
|
|
442 | (1) |
|
|
443 | (2) |
|
|
445 | (62) |
|
|
445 | (1) |
|
|
446 | (10) |
|
|
446 | (1) |
|
|
447 | (3) |
|
|
450 | (1) |
|
|
451 | (1) |
|
|
452 | (3) |
|
|
455 | (1) |
|
|
456 | (5) |
|
Security Model for Web Services |
|
|
456 | (2) |
|
Web Services Security Specifications |
|
|
458 | (1) |
|
Extended SkatesTown Security Scenario |
|
|
459 | (2) |
|
|
461 | (13) |
|
|
462 | (4) |
|
|
466 | (5) |
|
|
471 | (3) |
|
|
474 | (7) |
|
Public Key Infrastructure |
|
|
474 | (2) |
|
|
476 | (3) |
|
XML Key Management Specification |
|
|
479 | (2) |
|
|
481 | (1) |
|
|
482 | (10) |
|
WS-SecureConversation Overview |
|
|
483 | (3) |
|
|
486 | (1) |
|
Negotiation Protocol Example |
|
|
487 | (5) |
|
|
492 | (3) |
|
|
495 | (5) |
|
|
495 | (1) |
|
|
496 | (2) |
|
J2EE and Web Services Security |
|
|
498 | (2) |
|
|
500 | (2) |
|
|
502 | (1) |
|
|
502 | (5) |
|
10 Web Services Reliable Messaging |
|
|
507 | (1) |
|
Background of the Web Services Reliable Messaging Protocol (WS-RM) |
|
|
507 | (3) |
|
|
509 | (1) |
|
|
510 | (7) |
|
|
511 | (2) |
|
|
513 | (4) |
|
|
517 | (1) |
|
|
518 | (3) |
|
|
519 | (1) |
|
|
519 | (1) |
|
SequenceExpiration Policy |
|
|
519 | (1) |
|
InactivityTimeout Assertion |
|
|
520 | (1) |
|
BaseRetransmissionlnterval Assertion |
|
|
520 | (1) |
|
Acknowledgement Interval Assertion |
|
|
520 | (1) |
|
|
520 | (1) |
|
Flaws and Other Thoughts on the WS-RM Spec |
|
|
521 | (1) |
|
|
521 | (2) |
|
|
523 | (1) |
|
|
523 | (2) |
|
11 Web Services Transactions |
|
|
525 | (1) |
|
Web Services Coordination and Transaction (WS-C/Tx) |
|
|
525 | (2) |
|
Transactions: A Brief Introduction |
|
|
527 | (2) |
|
|
529 | (7) |
|
|
530 | (1) |
|
The CreateCoordinationContext Operation |
|
|
530 | (2) |
|
|
532 | (4) |
|
WS-Coordination Fault Codes |
|
|
536 | (1) |
|
WS-Transaction: Atomic Transactions |
|
|
536 | (8) |
|
|
537 | (1) |
|
|
537 | (1) |
|
|
538 | (1) |
|
Two-Phase Commit Protocols |
|
|
538 | (1) |
|
Committing the Transaction |
|
|
539 | (4) |
|
Transaction Flow Overview |
|
|
543 | (1) |
|
Business Activity Protocol |
|
|
544 | (1) |
|
Reliable Delivery and Security |
|
|
545 | (1) |
|
|
546 | (1) |
|
|
547 | (2) |
|
12 Orchestrating Web Services |
|
|
549 | (1) |
|
Why Are We Composing Web Services? |
|
|
549 | (3) |
|
Two-Level Programming Model |
|
|
550 | (1) |
|
Stateless and Stateful Web Services |
|
|
550 | (1) |
|
Evolution of Business Process Languages |
|
|
550 | (1) |
|
|
551 | (1) |
|
Business Process Execution Language for Web Services |
|
|
552 | (36) |
|
|
553 | (1) |
|
External Interface of a Process |
|
|
554 | (4) |
|
Overall Structure of a Process |
|
|
558 | (3) |
|
Basic and Structured Activities |
|
|
561 | (1) |
|
Process Lifecycle and Related Activities |
|
|
562 | (1) |
|
|
563 | (2) |
|
Properties and Correlation Sets |
|
|
565 | (3) |
|
Invoking Web Services and Providing Web Services |
|
|
568 | (4) |
|
Data Handling and Related Activities |
|
|
572 | (3) |
|
More Basic Activities: wait, empty |
|
|
575 | (1) |
|
|
576 | (4) |
|
More Structured Activities: sequence, while, switch, scope |
|
|
580 | (2) |
|
|
582 | (3) |
|
|
585 | (2) |
|
|
587 | (1) |
|
SkatesTown: Putting It All Together |
|
|
588 | (13) |
|
|
601 | (3) |
|
|
601 | (3) |
|
|
604 | (1) |
|
|
604 | (1) |
|
|
605 | (4) |
III Web Services in the Real World |
|
|
13 Web Services Interoperability |
|
|
609 | (122) |
|
Web Services Interoperability Organization |
|
|
610 | (1) |
|
|
611 | (37) |
|
Common Requirements for SOAP Envelope, WSDL Document, and XML Schema Document |
|
|
619 | (1) |
|
Understanding the WSDL Document Structure |
|
|
620 | (2) |
|
Importing XML Schema and WSDL Documents |
|
|
622 | (1) |
|
Defining the Service Interface |
|
|
623 | (3) |
|
|
626 | (11) |
|
Publishing a Service Description |
|
|
637 | (1) |
|
HTTP and SOAP Message Content |
|
|
638 | (3) |
|
|
641 | (1) |
|
|
641 | (2) |
|
Service Provider, Requestor, and Registry Requirements |
|
|
643 | (2) |
|
Summary of Basic Profile 1.0 Requirements |
|
|
645 | (3) |
|
|
648 | (13) |
|
|
648 | (1) |
|
Simple SOAP Binding Profile 1.0 |
|
|
649 | (1) |
|
|
650 | (10) |
|
Basic Security Profile 1.0 |
|
|
660 | (1) |
|
|
661 | (2) |
|
|
663 | (8) |
|
|
663 | (2) |
|
Monitor Configuration File |
|
|
665 | (1) |
|
|
665 | (2) |
|
|
667 | (1) |
|
Analyzer Configuration File |
|
|
667 | (1) |
|
|
668 | (1) |
|
Profile Configuration Report |
|
|
668 | (3) |
|
|
671 | (1) |
|
|
672 | (1) |
|
14 Web Services Pragmatics |
|
|
673 | (1) |
|
Enterprise Adoption of Web Services |
|
|
674 | (9) |
|
Time-Based Adoption Challenges |
|
|
676 | (1) |
|
Inherent Limitations of SOA |
|
|
677 | (2) |
|
Top-Down Versus Bottom-Up |
|
|
679 | (3) |
|
|
682 | (1) |
|
Putting Web Services in Production |
|
|
683 | (13) |
|
Web Services Technology Map |
|
|
685 | (6) |
|
System Architectures for Web Services |
|
|
691 | (5) |
|
Features, Capabilities, and Approaches |
|
|
696 | (19) |
|
|
696 | (1) |
|
|
697 | (2) |
|
Deployment and Provisioning |
|
|
699 | (1) |
|
Business Process Automation Using Web Services |
|
|
700 | (8) |
|
|
708 | (7) |
|
|
715 | (1) |
|
|
715 | (2) |
|
15 Epilogue: Web Services Futures |
|
|
717 | (1) |
|
A Roadmap for Web Services |
|
|
717 | (3) |
|
Age of Invention (Base SOAP, WSDL, UDDI) |
|
|
717 | (1) |
|
Age of Development (from Hype to Delivery) |
|
|
718 | (1) |
|
Age of Mainstream Acceptance (Web Services Become Boring) |
|
|
719 | (1) |
|
Future Trends in Web Services |
|
|
720 | (9) |
|
Short-Term Trends and Issues |
|
|
720 | (3) |
|
|
723 | (4) |
|
|
727 | (2) |
|
|
729 | (2) |
A Glossary |
|
731 | (24) |
Index |
|
755 | |