SOA Using Java™ Web Services
by Mark D. Hansen

Foreword .......... xv

Preface .......... xix

Acknowledgments .......... xxvii

About the Author .......... xxix

Chapter 1: Service-Oriented Architecture with Java Web Services .......... 1

  • 1.1 Am I Stupid, or Is Java Web Services Really Hard? .......... 2
  • 1.2 Web Services Platform Architecture .......... 8
  • 1.3 Java Web Services Standards: Chapters 2 through 8 .......... 18
  • 1.4 The SOAShopper Case Study: Chapters 9 and 10 .......... 21
  • 1.5 SOA-J and WSDL-Centric Development: Chapter 11 .......... 22

Chapter 2: An Overview of Java Web Services .......... 25

  • 2.1 The Role of JWS in SOA Application Development .......... 26
  • 2.2 A Quick Overview of the Ease-of-Use Features .......... 36
  • 2.3 JAX-WS 2.0 .......... 43
  • 2.4 JAXB 2.0 .......... 54
  • 2.5 WS-Metadata 2.0 .......... 73
  • 2.6 WSEE 1.2 .......... 80
  • 2.7 Impact of Other Java EE 5 Annotation Capabilities .......... 82
  • 2.8 Conclusions .......... 84

Chapter 3: Basic SOA Using REST .......... 85

  • 3.1 Why REST? .......... 85
  • 3.2 XML Documents and Schema for EIS Records .......... 88
  • 3.3 REST Clients with and without JWS .......... 97
  • 3.4 SOA-Style Integration Using XSLT and JAXP for Data Transformation .......... 114
  • 3.5 RESTful Services with and without JWS .......... 125
  • 3.6 Conclusions .......... 136

Chapter 4: The Role of WSDL, SOAP, and Java/XML Mapping in SOA .......... 137

  • 4.1 The Role of WSDL in SOA .......... 138
  • 4.2 The Role of SOAP in SOA .......... 145
  • 4.3 Dispatching: How JAX-WS 2.0 Maps WSDL/SOAP to Java Invocation .......... 151
  • 4.4 Working around Some JAX-WS 2.0 Dispatching Limitations .......... 166
  • 4.5 SOA Often Requires $(CSt(Bart from WSDL and Java$(D .(B......... 175
  • 4.6 Working around JAXB 2.0 Java/XML Mapping Limitations .......... 182
  • 4.7 Conclusions .......... 194

Chapter 5: The JAXB 2.0 Data Binding .......... 195

  • 5.1 Binding versus Mapping .......... 195
  • 5.2 An Overview of the Standard JAXB 2.0 Java/XML Binding .......... 199
  • 5.3 Implementing Type Mappings with JAXB 2.0 .......... 209
  • 5.4 A Recursive Framework for Type Mappings .......... 217
  • 5.5 Implementing Type Mappings with JAXB 2.0 Annotations .......... 224
  • 5.6 Implementing Type Mappings with the JAXB 2.0 Binding Language .......... 235
  • 5.7 Implementing Type Mappings with the JAXB 2.0 XmlAdapter Class .......... 245
  • 5.8 JAXB 2.0 for Data Transformation (Instead of XSLT) .......... 256
  • 5.9 Conclusions .......... 262

Chapter 6: JAX-WS 2.0 Client-Side Development .......... 265

  • 6.1 JAX-WS Proxies .......... 265
  • 6.2 XML Messaging .......... 285
  • 6.3 Invocation with Custom Java/XML Mappings: An Example Using Castor Instead of JAXB .......... 292
  • 6.4 Asynchronous Invocation .......... 297
  • 6.5 SOAP Message Handlers .......... 304
  • 6.6 Conclusions .......... 310

Chapter 7: JAX-WS 2.0 Server-Side Development .......... 311

  • 7.1 JAX-WS Server-Side Architecture .......... 311
  • 7.2 Start from WSDL Using a Service Endpoint Interface (SEI) .......... 316
  • 7.3 Providers and XML Processing without JAXB .......... 320
  • 7.4 Deploying Web Services Using Custom Java/XML Mappings .......... 325
  • 7.5 Validation and Fault Processing .......... 329
  • 7.6 Server-Side Handlers .......... 343
  • 7.7 Java SE Deployment with javax.xml.ws.Endpoint .......... 347
  • 7.8 Conclusions .......... 355

Chapter 8: Packaging and Deployment of SOA Components (JSR-181 and JSR-109) .......... 357

  • 8.1 Web Services Packaging and Deployment Overview .......... 359
  • 8.2 Deployment without Deployment Descriptors .......... 376
  • 8.3 Using Deployment Descriptors .......... 384
  • 8.4 Automatic Deployment with GlassFish .......... 402
  • 8.5 Web Services Security .......... 405
  • 8.6 OASIS XML Catalogs 1.1 .......... 407
  • 8.7 Wrapping Up .......... 409

Chapter 9: SOAShopper: Integrating eBay, Amazon, and Yahoo! Shopping .......... 411

  • 9.1 Overview of SOAShopper .......... 411
  • 9.2 SOAShopper SOAP Services .......... 417
  • 9.3 An SOAShopper RESTful Service and the Standard XML Schema .......... 423
  • 9.4 Service Implementation .......... 431
  • 9.5 eBay and Amazon Services (SOAP) .......... 434
  • 9.6 Yahoo! Services (REST) .......... 444
  • 9.7 SOAShopper API and the Integration Layer .......... 450
  • 9.8 Conclusions about Implementing Real-World SOA Applications with Java EE .......... 460

Chapter 10: Ajax and Java Web Services .......... 463

  • 10.1 Quick Overview of Ajax .......... 464
  • 10.2 AjaxTogether with Java EE Web Services .......... 468
  • 10.3 Sample Code: An AjaxFront-End for SOAShopper .......... 470
  • 10.4 Conclusions about Ajax and Java EE .......... 479

Chapter 11: WSDL-Centric Java Web Services with SOA-J .......... 481

  • 11.1 SOA-J Architecture .......... 483
  • 11.2 WSDL-Centric Development with SOA-J .......... 486
  • 11.3 Invocation Subsystem .......... 493
  • 11.4 Serialization Subsystem .......... 503
  • 11.5 Deployment Subsystem .......... 514
  • 11.6 Conclusions .......... 519

Appendix A: Java, XML, and Web Services Standards Used in This Book .......... 523

Appendix B: Software Configuration Guide .......... 525

  • B.1 Install Java EE 5 SDK .......... 526
  • B.2 Install Apache Ant 1.7.x .......... 527
  • B.3 Install Apache Maven 2.0.x .......... 527
  • B.4 Install the Book Example Code .......... 528
  • B.5 Configure Maven .......... 528
  • B.6 Configure Ant .......... 530
  • B.7 Starting and Stopping the GlassFish Server .......... 532
  • B.8 Test the Installation by Running an Example .......... 532
  • B.9 Build and Deploy the SOAShopper Case Study (Chapters 9 and 10) .......... 534
  • B.10 Build and Deploy the SOA-J Application Framework (Chapter 11) .......... 535
  • B.11 Install Java SE 6 (Optional) .......... 535

Appendix C: Namespace Prefixes .......... 537

Glossary .......... 539

References .......... 555

Index .......... 561