Book Home
Foreword
About the Authors
Preface
1 Introduction
1.1 What Are Web Services?
1.2 Benefits of Web Services
1.3 Challenges of Web Service Development
-
1.3.1 Evolving Technologies and Products
-
1.3.2 Security
-
1.3.3 Reliability, Availability, and Scalability
1.4 Typical Web Service Scenarios
-
1.4.1 Interacting with Business Partners
-
1.4.2 Integrating with Existing Enterprise Information Systems
-
1.4.3 Reaching Diverse Clients
-
1.4.4 Aggregation of Partner Data
1.5 J2EE 1.4: The Platform for Web Services
-
1.5.1 J2EE Platform Overview
-
1.5.2 J2EE Platform Benefits
-
1.5.3 J2EE Platform Technologies
1.6 Conclusion
2 Standards and Technologies
2.1 Overview of Web Service Standards
-
2.1.1 Extensible Markup Language
-
2.1.2 Simple Object Access Protocol
-
2.1.3 Registry Standards
-
2.1.4 Web Services Description Language
-
2.1.5 Emerging Standards
2.2 J2EE: The Integrated Platform for Web Services
-
2.2.1 Java APIs for XML Processing
-
2.2.2 JavaTM API for XML-Based RPC
-
2.2.3 JavaTM API for XML Registries
-
2.2.4 SOAP with Attachments API for JavaTM
-
2.2.5 Web Service Technologies Integrated in J2EE Platform
-
2.2.6 Support for WS-I Basic Profile
2.3 Other Java-XML Technologies
2.4 Conclusion
3 Service Endpoint Design
3.1 Example Scenarios
3.2 Flow of a Web Service Call
3.3 Key Web Services Design Decisions
3.4 Designing a Service's Interaction Layer
-
3.4.1 Designing the Interface
-
3.4.2 Receiving Requests
-
3.4.3 Delegating Web Service Requests to Processing Layer
-
3.4.4 Formulating Responses
3.5 Processing Layer Design
3.6 Publishing a Web Service
-
3.6.1 Publishing a Service in a Registry
-
3.6.2 Understanding Registry Concepts
-
3.6.3 Registry Implementation Scenarios
3.7 Handling XML Documents in a Web Service
-
3.7.1 Exchanging XML Documents
-
3.7.2 Separating Document Manipulation from Processing Logic
-
3.7.3 Fragmenting XML Documents
-
3.7.4 Using XML
-
3.7.5 Using JAXM and SAAJ Technologies
3.8 Deploying and Packaging a Service Endpoint
-
3.8.1 Service Information in the Deployment Descriptors
-
3.8.2 Package Structure
3.9 Conclusion
4 XML Processing
4.1 XML Overview
-
4.1.1 Document Type and W3C XML Schema Definitions
-
4.1.2 XML Horizontal and Vertical Schemas
-
4.1.3 Other Specifications Related to XML
4.2 Outline for Handling XML Documents
4.3 Designing XML-Based Applications
-
4.3.1 Designing Domain-Specific XML Schemas
-
4.3.2 Receiving and Sending XML Documents
-
4.3.3 Validating XML Documents
-
4.3.4 Mapping Schemas to the Application Data Model
-
4.3.5 Choosing Processing Models
-
4.3.6 Fragmenting Incoming XML Documents
-
4.3.7 Abstracting XML Processing from Application Logic
-
4.3.8 Design Recommendation Summary
4.4 Implementing XML-Based Applications
-
4.4.1 Choosing an XML Processing Programming Model
-
4.4.2 Combining XML Processing Techniques
-
4.4.3 Entity Resolution
4.5 Performance Considerations
-
4.5.1 Limit Parsing of Incoming XML Documents
-
4.5.2 Use the Most Appropriate API
-
4.5.3 Choose Effective Parser and Style Sheet Implementations
-
4.5.4 Reduce Validation Cost
-
4.5.5 Reduce the Cost of Referencing External Entities
-
4.5.6 Cache Dynamically Generated Documents
-
4.5.7 Use XML Judiciously
4.6 Conclusion
5 Client Design
5.1 Choosing a Communication Technology
5.2 Scenarios for Web Services-Based Client Applications
-
5.2.1 Designing J2EE Clients
-
5.2.2 Designing J2SE Clients
-
5.2.3 J2ME Clients
5.3 Developing Client Applications to Use a Web Service
-
5.3.1 Communication Modes for Accessing a Service
-
5.3.2 Locating and Accessing a Service
-
5.3.3 Stubs and Call Configuration
-
5.3.4 WSDL-to-Java Type Mapping
-
5.3.5 Processing Return Values
-
5.3.6 Handling Exceptions
5.4 General Considerations
-
5.4.1 Managing Conversational State
-
5.4.2 Enhancing User Experience
-
5.4.3 Server-Side Design Considerations for Clients
-
5.4.4 Packaging
5.5 Conclusion
6 Enterprise Application Integration
6.1 Integration Requirements and Scenarios
-
6.1.1 Typical Integration Scenarios
-
6.1.2 Example Integration Scenarios
6.2 J2EE Integration Technologies
-
6.2.1 Relational Database Integration Technologies
-
6.2.2 Messaging Technologies
-
6.2.3 EIS Access Technologies
-
6.2.4 Web Service and XML Technologies
6.3 Integration Design Approaches
-
6.3.1 Web Services Approach
-
6.3.2 Enterprise Beans and JMS Approach
-
6.3.3 The Connector Approach
-
6.3.4 Combining Approaches into an Integration Architecture
6.4 Data Integration Guidelines
-
6.4.1 Data Mapping in EAI Applications
-
6.4.2 Data Transformation
-
6.4.3 Data Filtering
6.5 Guidelines for Integration
-
6.5.1 Integrating Custom Legacy Systems
-
6.5.2 Using Screen Scraping for Integration
-
6.5.3 Metadata
-
6.5.4 Using Registries for Integration
-
6.5.5 Versioning and Evolution
-
6.5.6 Writing Applications for Integration
6.6 Conclusion
7 Security
7.1 Security Scenarios
-
7.1.1 General Security Requirements
-
7.1.2 Security Implications of the Operational Environment
7.2 J2EE Platform Security Model
-
7.2.1 Authentication
-
7.2.2 Authorization
-
7.2.3 Confidentiality and Integrity
7.3 Security for Web Service Interactions
-
7.3.1 Endpoint Programming Model
-
7.3.2 Client Programming Model
-
7.3.3 Propagating Component Identity
-
7.3.4 Handling Authorization
-
7.3.5 JAX-RPC Security Guidelines
7.4 Message-Level Web Service Security
-
7.4.1 Understanding Message-Level Security
-
7.4.2 Comparing Security Mechanisms
-
7.4.3 Emerging Message-Level Security Standards
7.5 Conclusion
8 Application Architecture and Design
8.1 Overview of Adventure Builder
-
8.1.1 Order Processing Center Sub-Modules and Interactions
8.2 Order Processing Center Architecture and Design
-
8.2.1 Web Service Interaction and Message Exchange
-
8.2.2 Communication Architecture
8.3 Endpoint Design Issues
-
8.3.1 Web Service Interface Development Approach
-
8.3.2 Endpoint Type Considerations
-
8.3.3 Granularity of Service
-
8.3.4 Passing Parameters as Documents or Java Objects
-
8.3.5 Layering the Service
-
8.3.6 Delegating to Business Logic
-
8.3.7 Client Considerations
-
8.3.8 Publishing Web Service Details
8.4 Web Service Communication Patterns
-
8.4.1 Correlating Messages
-
8.4.2 Splitting and Joining Messages
-
8.4.3 Refactoring Synchronous to Asynchronous Interactions
8.5 Managing Complex Web Service Interactions
-
8.5.1 Passing Context Information on Web Service Calls
-
8.5.2 Handling Multiple Document Types
-
8.5.3 Consolidating Web Service Interactions
-
8.5.4 Canonical Data Model
8.6 Building More Robust Web Services
-
8.6.1 Use Idempotent Endpoints
-
8.6.2 Use Client Retries with Idempotent Endpoints
-
8.6.3 Handling Asynchronous Interaction Error Conditions
8.7 Conclusion
Glossary
Index