Table of Contents
Preface
Chapter 1: Why Enterprise Service Bus
Chapter 2: Java Business Integration
Chapter 3: JBI Container—ServiceMix
Chapter 4: Binding—The Conventional Way
Chapter 5: Some XFire Binding Tools
Chapter 6: JBI Packaging and Deployment
Chapter 7: Developing JBI Components
Chapter 8: Binding EJB in a JBI Container
Chapter 9: POJO Binding Using JSR181
Chapter 10: Bind Web Services in ESB—Web Services Gateway
Chapter 11: Access Web Services Using the JMS Channel
Chapter 12: Java XML Binding using XStream
Chapter 13: JBI Proxy
Chapter 14: Web Service Versioning
Chapter 15: Enterprise Integration Patterns in ESB
Chapter 16: Sample Service Aggregation
Chapter 17: Transactions, Security, Clustering, and JMX
Index
- Chapter 1: Why Enterprise Service Bus
- Boundary-Less Organization
- Multiple Systems
- No Canonical Data Format
- Autonomous, but Federated
- Intranet versus Internet
- Trading Partners
- Integration
- Enterprise Application Integration
- Integration Architectures
- Point-to-Point Solution
- Hub-and-Spoke Solution
- Enterprise Message Bus Integration
- Enterprise Service Bus Integration
- Enterprise Service Bus versus Message Bus
- Similarities and Differences
- Maturity and Industry Adoption
- Making the Business Case for ESB
- How many Channels
- Volatile Interfaces
- New Systems Introducing Data Redundancy
- Service Reuse
- System Management and Monitoring
- Enterprise Service Bus
- Service in ESB
- Abstraction beyond Interface
- Service Aggregation
- Service Enablement
- Service Consolidation
- Service Sharing
- Linked Services
- Virtualization of Services
- Services Fabric
- Summary
- Boundary-Less Organization
- Chapter 2: Java Business Integration
- SOA—the Motto
- Why We Need SOA
- What is SOA?
- SOA and Web Services
- Service Oriented Integration (SOI)
- JBI in J2EE—How they Relate
- Servlets, Portlets, EJB, JCA, and so on
- JBI and JCA—Competing or Complementing
- JBI—a New Standard
- JBI in Detail
- JSR 208
- JBI Nomenclature
- Provider—Consumer Contract
- Detached Message Exchange
- Provider—Consumer Role
- Message Exchange
- Service Invocation
- Message Exchange Patterns (MEP)
- In-Only MEP
- Robust In-Only MEP
- In-Out MEP
- In-Optional-Out MEP
- ESB—Will it Solve all Our Pain Points
- Summary
- SOA—the Motto
- Chapter 3: JBI Container—ServiceMix
- ServiceMix—Under the Hood
- Salient Features
- ServiceMix Architecture
- Architecture Diagram
- Normalized Message Router Flows
- Other ESBs
- Mule
- Celtix
- Iona Artix
- PEtALS
- ChainBuilder
- Installing ServiceMix
- Hardware Requirements
- OS Requirements
- Run-time Environment
- Installing ServiceMix in Windows
- Installing ServiceMix in Unix
- Configuring ServiceMix
- Starting ServiceMix
- Stopping ServiceMix
- Resolving classpath Issues
- ServiceMix Components—a Synopsis
- Standard JBI Components
- Lightweight JBI Components
- Your First JBI Sample—Binding an External HTTP Service
- Servlet-based HTTP Service
- Configure the HTTP Service in ServiceMix
- Run ServiceMix Basic JBI Container
- Run a Client against ServiceMix
- What Just Happened in ServiceMix
- Spring XML Configuration for ServiceMix
- Summary
- ServiceMix—Under the Hood
- Chapter 4: Binding—The Conventional Way
- Binding—What it Means
- Binding
- Endpoints
- Apache SOAP Binding
- A Word about Apache SOAP
- Apache SOAP Format and Transports
- RPC and Message Oriented
- Binding Services
- Sample Bind a Stateless EJB Service to Apache SOAP
- Sample Scenario
- Code Listing
- Running the Sample
- Deploying the EJB
- Bind EJB to SOAP
- Run the Client
- What Just Happened
- How the Sample Relates to ServiceMix
- Summary
- Binding—What it Means
- Chapter 5: Some XFire Binding Tools
- Binding in XFire
- XFire Transports
- JSR181 and XFire
- Web Service Using XFireConfigurableServlet
- Sample Scenario
- Code Listing
- Running the Sample
- Web Service using XFire Spring XFireExporter
- Sample Scenario
- Code Listing
- Running the Sample
- Web Service Using XFire Spring Jsr181 Handler
- Sample Scenario
- Code Listing
- Running the Sample
- XFire Export and Bind EJB
- Sample Scenario
- Code Listing
- Running the Sample
- XFire for Lightweight Integration
- Summary
- Binding in XFire
- Chapter 6: JBI Packaging and Deployment
- Packaging in ServiceMix
- Installation Packaging
- Service Assembly Packaging
- Service Unit Packaging
- Deployment in ServiceMix
- Standard and JBI compliant
- Lightweight
- Packaging and Deployment Sample
- Phase One—Component Development
- Phase Two—Component Packaging
- Running the Packaging and Deployment Sample
- Summary
- Packaging in ServiceMix
- Chapter 7: Developing JBI Components
- Need for Custom JBI Components
- ServiceMix Component Helper Classes
- MessageExchangeListener
- TransformComponentSupport
- Create, Deploy, and Run JBI Component
- Code HttpInterceptor Component
- Configure HttpInterceptor Component
- Package HttpInterceptor Component
- Deploy HttpInterceptor Component
- Build and Run the Sample
- Summary
- Chapter 8: Binding EJB in a JBI Container
- Component versus Services
- Coexisting EJB Components with Services
- Indiscrimination at Consumer Perspective
- Binding EJB Sample
- Step One—Define and Deploy the EJB Service
- Step Two—Bind EJB to ServiceMix
- Step Three—Deploy and Invoke EJB Binding in ServiceMix
- Step Four—Access WSDL and Generate Axis-based Stubs to Access EJB Outside Firewall
- Reconciling EJB Resources
- Summary
- Component versus Services
- Chapter 9: POJO Binding Using JSR181
- POJO
- What are POJOs
- Comparing POJO with other Components
- ServiceMix servicemix-jsr181
- JSR 181
- servicemix-jsr181
- servicemix-jsr181 Deployment
- servicemix-jsr181 Endpoint
- POJO Binding Sample
- Sample Use Case
- POJO Code Listing
- XBean-based POJO Binding
- Deployment Configuration
- Deploying and Running the Sample
- Access WSDL and Generate Axis-based Stubs to Access POJO Remotely
- Accessing JBI Bus Sample
- Sample Use Case for Accessing JBI Bus
- Sample Code Listing
- Build, Deploy, and Run the Sample
- Summary
- POJO
- Chapter 10: Bind Web Services in ESB—Web Services Gateway
- Web Services
- Binding Web Services
- Why Another Indirection?
- HTTP
- ServiceMix's servicemix-http
- servicemix-http in Detail
- Consumer and Provider Roles
- servicemix-http XBean Configuration
- servicemix-http Lightweight Configuration
- Web Service Binding Sample
- Sample Use Case
- Deploy the Web Service
- XBean-based servicemix-http Binding
- Deploying and Running the Sample
- Access WSDL and Generate Axis Stubs to Access the Web Service Remotely
- Summary
- Web Services
- Chapter 11: Access Web Services Using the JMS Channel
- JMS
- Web Service and JMS
- Specifications for Web Service Reliable Messaging
- SOAP over HTTP versus SOAP over JMS
- JMS in ServiceMix
- Servicemix-jms
- Consumer and Provider Roles
- servicemix-jms XBean Configuration
- servicemix-jms Lightweight Configuration
- Protocol Bridge
- Web Service in the JMS Channel Binding Sample
- ServiceMix Component Architecture for the JMS Web Service
- Deploy the Web Service
- XBean-based servicemix-jms Binding
- XBean-based servicemix-eip Pipeline Bridge
- XBean-based servicemix-http Provider Destination
- Deploying the Sample and Starting ServiceMix
- Test Web Service Using JMS Channel
- Summary
- Chapter 12: Java XML Binding using XStream
- Java XML Binding
- JAXB
- XStream
- ServiceMix and XStream
- XStream in a Normalized Message Router Sample
- Sample Use Case
- Code HTTPClient
- Unmarshalling to Transfer Objects
- HttpInterceptor Component
- XStreamInspector Component
- Configure Interceptor and Inspector Components
- Package Interceptor and Inspector Components
- Deploy Interceptor and Inspector Components
- Build and Run the Sample
- Summary
- Java XML Binding
- Chapter 13: JBI Proxy
- Proxy—A Primer
- Proxy Design Pattern
- JDK Proxy Class
- Sample JDK Proxy Class
- ServiceMix JBI Proxy
- JBI Proxy Sample Implementing Compatible Interface
- Proxy Code Listing
- XBean-based JBI Proxy Binding
- Deployment Configuration
- Deploying and Running the Sample
- JBI Proxy Sample implementing In-Compatible interface
- Proxy Code Listing
- XBean-based JBI Proxy Binding
- Deployment Configuration
- Deploying and Running the Sample
- Invoke External Web Service from the ServiceMix Sample
- Web Service Code Listing
- Axis Generated Client Stubs
- XBean-based JBI Proxy Binding
- Deployment Configuration
- Deploying and Running the Sample
- Proxy and WSDL Generation
- Summary
- Proxy—A Primer
- Chapter 14: Web Service Versioning
- Service Versioning—A Means to SOA
- Services are Autonomous
- Change is the Only Constant Thing
- All Purpose Interfaces
- SOA Versioning—Don't Touch the Anti-Pattern
- Types can Inherit—Why not My Schemas
- If Not Versions, Then What
- Strategy to Version Web Service
- Which Level to Version
- Version Control in a Schema
- targetNamespace for WSDL
- Version Parameter
- Web Service Versioning Approaches
- Covenant
- Multiple Endpoint Addresses
- Web Service Versioning Sample using ESB
- Sample Use Case
- Configure Components in ESB
- Deploy and Run the Sample
- Web Service Versioning Operational Perspective
- Summary
- Service Versioning—A Means to SOA
- Chapter 15: Enterprise Integration Patterns in ESB
- Enterprise Integration Patterns
- What are EAI Patterns?
- EAI Patterns Book and Site
- ServiceMix EAI Patterns
- Why ServiceMix for EAI Patterns?
- ServiceMix EAI Patterns Configuration
- EAI Patterns—Code and Run Samples in ESB
- Content-based Router
- Notation
- Explanation
- Illustrative Design
- Sample Use Case
- Sample Code and Configuration
- Deploy and Run the Sample
- Content Enricher
- Notation
- Explanation
- Illustrative Design
- Sample Use Case
- Sample code and configuration
- Deploy and Run the Sample
- XPath Splitter
- Notation
- Explanation
- Illustrative Design
- Sample Use Case
- Sample Code and Configuration
- Deploy and Run the Sample
- Static Recipient List
- Notation
- Explanation
- Illustrative Design
- Sample Use Case
- Sample Code and Configuration
- Deploy and Run the Sample
- Wiretap
- Notation
- Explanation
- Illustrative Design
- Sample Use Case
- Sample Code and Configuration
- Deploy and Run the Sample
- Message Filter
- Notation
- Explanation
- Illustrative Design
- Sample Use Case
- Sample Code and Configuration
- Deploy and Run the Sample
- Split Aggregator
- Notation
- Explanation
- Illustrative Design
- Sample Use Case
- Sample Code and Configuration
- Deploy and Run the Sample
- Pipeline
- Notation
- Explanation
- Illustrative Design
- Sample Use Case
- Sample Code and Configuration
- Deploy and Run the Sample
- Static Routing Slip
- Notation
- Explanation
- Illustrative Design
- Sample Use Case
- Sample Code and Configuration
- Deploy and Run the Sample
- Content-based Router
- Summary
- Enterprise Integration Patterns
- Chapter 16: Sample Service Aggregation
- Provision Service Order—Business Integration Sample
- Solution Architecture
- JBI-based ESB Component Architecture
- Understanding the Message Exchange
- Deploying and Running the Sample
- Summary
- Provision Service Order—Business Integration Sample
- Chapter 17: Transactions, Security, Clustering, and JMX
- Cross Cutting Concerns—Support Inside ServiceMix
- Transactions
- Security
- Clustering
- JMX
- Sample Demonstrating Transaction
- Sample Use Case
- Configure Transaction in ServiceMix
- Deploy and Run the Sample
- Sample demonstrating Security
- Sample Use Case
- Configure Basic Authorization in servicemix-http
- Deploy and Run the Sample
- Sample Demonstrating Clustering
- Sample Use Case
- Configure ServiceMix Cluster
- Deploy and run the sample
- Sample demonstrating JMX
- Enable JMX in ServiceMix Application
- Initialize JMX Console—MC4J
- Retrieve WSDL through JMX
- Summary
- Cross Cutting Concerns—Support Inside ServiceMix



