Table Of ContentFront cover
WebSphere Business Integration
Adapters: An Adapter
Development and WebSphere
Business Integration Solution
Incorporate business-to-business exchanges
using WebSphere BI Connect
Use adapters with Message Broker
and Server Foundation
Develop and deploy a custom adapter
Lee Gavin
Geert Van de Putte
Jeffrey Blight
Antti Lundstrom
Girolamo Palumbo
Liz Savoie
Chris Sparshott
Susumu Sugihara
Alberto Tatarano
ibm.com/redbooks
International Technical Support Organization
WebSphere Business Integration Adapters: An
Adapter Development and WebSphere Business
Integration Solution
July 2005
SG24-6345-00
Note: Before using this information and the product it supports, read the information in
“Notices” on pagexv.
First Edition (July 2005)
This edition applies to Version 4, Release 2, Modification 4 of WebSphere Business Integration
Adapters (product number 5724-G83).
© Copyright International Business Machines Corporation 2005. All rights reserved.
Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP
Schedule Contract with IBM Corp.
Contents
Notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Trademarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xvi
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
The team that wrote this redbook. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviii
Become a published author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xx
Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xx
Part 1. Adapter development: The theory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Chapter 1. Adapter development. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 Technical assessment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Getting started with the development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 Understanding the application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.2 Identifying the directionality of the connector . . . . . . . . . . . . . . . . . . . 5
1.2.3 Identifying the application-specific business objects. . . . . . . . . . . . . . 5
1.2.4 Investigating the application data interaction interface. . . . . . . . . . . . 6
1.2.5 Investigating the event management and notification mechanism . . . 7
1.2.6 Investigating communication across operating systems. . . . . . . . . . . 7
1.3 Getting started with the development project . . . . . . . . . . . . . . . . . . . . . . . 7
Chapter 2. Business objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1 Overview of business objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Types of business objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.1 Application-specific business object . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.2 Generic business object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 Business object design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.1 Flat business object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.2 Hierarchical business object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.3 Business object structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.4 Wrapper business objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4 Application-specific information and metadata . . . . . . . . . . . . . . . . . . . . . 19
2.5 Metadata and metaobjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Chapter 3. Object Discovery Agents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1 Overview of ODA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2 Design considerations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3 Setting up the development environment . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4 Object Discovery Agent process flows . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
© Copyright IBM Corp. 2005. All rights reserved. iii
3.4.1 Obtaining ODA configuration properties. . . . . . . . . . . . . . . . . . . . . . 27
3.4.2 Selecting and confirming source data. . . . . . . . . . . . . . . . . . . . . . . . 29
3.4.3 Generating content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4.4 Saving content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.5 Object Discovery Agent data sources. . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Chapter 4. Agent initialization and termination . . . . . . . . . . . . . . . . . . . . . 33
4.1 Connector startup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.1.1 WebSphere InterChange Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.1.2 Business Integration Message Broker or Application Server . . . . . . 34
4.2 Connector initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2.1 Establishing a connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2.2 Checking the connector version . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2.3 Recovering In-Progress events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.3 Obtaining the business object handler . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.4 Connector termination. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.5 Extending the connector base class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Chapter 5. Data handlers and name handlers . . . . . . . . . . . . . . . . . . . . . . 41
5.1 Design decisions for data handlers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.1.1 Determining whether the data is metadata-driven . . . . . . . . . . . . . . 42
5.2 The development process. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3 Creating the custom data handler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.4 Converting data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.5 Name handler development overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.6 Implementing a name handler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.7 Name handler requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.8 Reuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.9 Configuration requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Chapter 6. Business object handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.1 Overview of request processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.2 Metadata. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.2.1 Metadata-driven connectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.2.2 Partially metadata-driven connectors . . . . . . . . . . . . . . . . . . . . . . . . 53
6.2.3 Connectors that do not use metadata. . . . . . . . . . . . . . . . . . . . . . . . 55
6.3 One generic business object handler for all business objects. . . . . . . . . . 56
6.4 Multiple business object handlers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.5 Designing the doVerbFor() method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.5.1 Performing the verb action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.5.2 Handling the Create verb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6.5.3 Handling the Retrieve verb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.5.4 Handling the RetrieveByContent verb. . . . . . . . . . . . . . . . . . . . . . . . 65
6.6 Handling the Update verb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
iv WebSphere Business Integration Adapters
6.6.1 Handling the Delete verb. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.7 Business object processing and cardinality. . . . . . . . . . . . . . . . . . . . . . . . 70
6.7.1 Processing flat business objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.7.2 Processing hierarchical business objects. . . . . . . . . . . . . . . . . . . . . 72
6.8 Custom business object handlers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.8.1 Creating the class for the custom business object handler. . . . . . . . 76
6.8.2 Implementing the doVerbForCustom() method. . . . . . . . . . . . . . . . . 76
Chapter 7. Connector configuration properties. . . . . . . . . . . . . . . . . . . . . 79
7.1 Overview of connector configuration property. . . . . . . . . . . . . . . . . . . . . . 80
7.1.1 Standard connector configuration properties . . . . . . . . . . . . . . . . . . 80
7.1.2 Connector-specific configuration properties . . . . . . . . . . . . . . . . . . . 80
7.2 Using properties in your adapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7.3 Retrieving properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7.3.1 Single-valued simple properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7.3.2 Hierarchical properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
7.4 Some last thoughts about standard properties . . . . . . . . . . . . . . . . . . . . . 85
7.4.1 RepositoryDirectory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.4.2 DeliveryTransport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Chapter 8. Asynchronous event processing and notification. . . . . . . . . . 89
8.1 Overview of event notification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
8.1.1 Subscription to a business object . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
8.2 Event and archive stores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
8.2.1 Content of an event store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
8.2.2 Implementing an event store. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
8.2.3 Accessing the event store. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.2.4 Creating an archive store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
8.3 Polling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8.3.1 Standard behavior. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
8.3.2 Basic logic for the poll method . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
8.3.3 Archiving events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
8.3.4 Multithreaded . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
8.3.5 Processing events by event priority . . . . . . . . . . . . . . . . . . . . . . . . 114
8.3.6 Event distribution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
8.4 Custom pollForEvents() method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
8.4.1 Accessing a subscription manager. . . . . . . . . . . . . . . . . . . . . . . . . 117
8.4.2 Verifying the connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
8.4.3 Retrieving event records. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
8.4.4 Getting the business object name, verb, and key. . . . . . . . . . . . . . 120
8.4.5 Checking for subscriptions to the event . . . . . . . . . . . . . . . . . . . . . 121
8.4.6 Retrieving application data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.4.7 Sending the business object to Adapter Framework. . . . . . . . . . . . 125
Contents v
8.4.8 Completing the processing of an event. . . . . . . . . . . . . . . . . . . . . . 130
8.4.9 Archiving the event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
8.4.10 Releasing event store resources. . . . . . . . . . . . . . . . . . . . . . . . . . 133
8.5 Processing delete events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
8.5.1 Setting the verb in the event record . . . . . . . . . . . . . . . . . . . . . . . . 135
8.5.2 Setting the verb in the business object. . . . . . . . . . . . . . . . . . . . . . 135
8.5.3 Setting the verb during mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . 136
8.6 Guaranteed event delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
8.6.1 Container-managed events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
8.6.2 Duplicate event elimination. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Chapter 9. Synchronous event processing (callback). . . . . . . . . . . . . . . 143
9.1 Overview of the executeCollaboration method . . . . . . . . . . . . . . . . . . . . 144
9.1.1 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
9.2 Using the executeCollaboration method. . . . . . . . . . . . . . . . . . . . . . . . . 145
9.3 Single or multithreaded support for sequential event processing . . . . . . 146
9.4 Adapter termination and sequential event processing . . . . . . . . . . . . . . 147
9.4.1 Normal termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
9.4.2 Abnormal termination or no neat adapter shutdown situations. . . . 147
Chapter 10. Local versus remote deployment . . . . . . . . . . . . . . . . . . . . . 149
10.1 Overview of adapter deployment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
10.2 Local deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
10.2.1 Configuring startup in the Windows environment . . . . . . . . . . . . . 152
10.2.2 Configuring startup in a UNIX environment. . . . . . . . . . . . . . . . . . 153
10.3 Remote deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
10.4 Setting up the communication between a remote agent and a broker . 155
10.4.1 Native WebSphere MQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
10.4.2 HTTP/HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
10.4.3 Configuring the adapter startup in remote environments . . . . . . . 161
Chapter 11. Component deployment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
11.1 Specifics about component deployment . . . . . . . . . . . . . . . . . . . . . . . . 164
11.1.1 WebSphere InterChange Server. . . . . . . . . . . . . . . . . . . . . . . . . . 164
11.1.2 WebSphere Business Integration Message Broker . . . . . . . . . . . 165
11.1.3 WebSphere Application Server. . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Part 2. Developing our custom adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Chapter 12. Setting up the development environment . . . . . . . . . . . . . . 171
12.1 Installing the necessary components . . . . . . . . . . . . . . . . . . . . . . . . . . 172
12.1.1 Installing WebSphere Studio Application Developer Integration Edition
V5.0.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
12.1.2 Installing IBM JDK 1.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
vi WebSphere Business Integration Adapters
12.1.3 Installing WebSphere MQ v5.3.0.2. . . . . . . . . . . . . . . . . . . . . . . . 172
12.1.4 Installing WebSphere Business Integration Adapter Framework V2.4
173
12.1.5 Installing WebSphere Business Integration Adapter Development Kit
V2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
12.2 Developing the adapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
12.2.1 Adapter Framework. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
12.2.2 Application-specific component. . . . . . . . . . . . . . . . . . . . . . . . . . . 193
12.2.3 Developing the application-specific component . . . . . . . . . . . . . . 193
Chapter 13. Adapter design and environment . . . . . . . . . . . . . . . . . . . . . 195
13.1 Understanding our scenario environment. . . . . . . . . . . . . . . . . . . . . . . 196
13.1.1 The requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
13.2 Examining the application environment. . . . . . . . . . . . . . . . . . . . . . . . . 198
13.3 Examining the API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
13.4 Designing application-specific business objects. . . . . . . . . . . . . . . . . . 201
13.5 Conclusion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Chapter 14. Object Discovery Agent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
14.1 Developing the ODA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
14.1.1 Setting up the development environment . . . . . . . . . . . . . . . . . . . 204
14.1.2 Naming conventions for the ODA . . . . . . . . . . . . . . . . . . . . . . . . . 206
14.2 Implementing the ODA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
14.2.1 Extending the ODA base class. . . . . . . . . . . . . . . . . . . . . . . . . . . 206
14.2.2 Obtaining the handle to the ODKUtility object. . . . . . . . . . . . . . . . 207
14.2.3 Initializing the configuration-property array. . . . . . . . . . . . . . . . . . 207
14.2.4 Initializing ODA metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
14.2.5 Initializing the ODA startup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
14.2.6 Choosing the ODA content protocol . . . . . . . . . . . . . . . . . . . . . . . 210
14.2.7 Generating source nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
14.2.8 Generating business object definitions. . . . . . . . . . . . . . . . . . . . . 212
14.2.9 Providing access to generated business object definitions. . . . . . 215
14.3 Testing the ODA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
14.3.1 Setting up the test environment . . . . . . . . . . . . . . . . . . . . . . . . . . 217
14.4 Deploying the ODA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
14.4.1 Exporting the ODA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
14.4.2 Creating the startup scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
14.5 Generating business objects using the ODA. . . . . . . . . . . . . . . . . . . . . 225
14.5.1 Completing the business objects . . . . . . . . . . . . . . . . . . . . . . . . . 232
Chapter 15. Initializing and terminating the adapter agent. . . . . . . . . . . 239
15.1 Extending the connector base class . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
15.2 Initializing the adapter agent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
15.2.1 Retrieving connector configuration properties. . . . . . . . . . . . . . . . 241
Contents vii
15.2.2 Establishing a connection to the application. . . . . . . . . . . . . . . . . 245
15.2.3 Checking the connector version . . . . . . . . . . . . . . . . . . . . . . . . . . 252
15.2.4 Terminating the adapter agent . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Chapter 16. Implementing a business object handler. . . . . . . . . . . . . . . 255
16.1 Extending the business-object-handler base class. . . . . . . . . . . . . . . . 256
16.2 Implementing the doVerbFor() method. . . . . . . . . . . . . . . . . . . . . . . . . 256
16.2.1 Obtaining the active verb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
16.2.2 Verifying the connection before processing the verb . . . . . . . . . . 258
16.2.3 Branching on the active verb. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
16.3 Performing the verb operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
16.3.1 Accessing the business object . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
16.3.2 Implementing our verb operation . . . . . . . . . . . . . . . . . . . . . . . . . 267
Chapter 17. Implementing event notification . . . . . . . . . . . . . . . . . . . . . . 277
17.1 Extending the event store class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
17.1.1 Implementing methods to in the CWConnectoreEventStore. . . . . 279
17.2 Implementing the fetchEvents() method . . . . . . . . . . . . . . . . . . . . . . . . 281
17.3 Implementing the deleteEvents() method . . . . . . . . . . . . . . . . . . . . . . . 283
17.4 Implementing the setEventStatus() method . . . . . . . . . . . . . . . . . . . . . 285
17.5 Implementing the archiveEvents() method . . . . . . . . . . . . . . . . . . . . . . 286
17.6 Implementing the recoverInProgress() method. . . . . . . . . . . . . . . . . . . 287
Chapter 18. Polling for events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
18.1 Using the pollForEvents() method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Part 3. Setting up applications for our scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Chapter 19. Overview of our scenario and applications. . . . . . . . . . . . . 307
19.1 Understanding our scenario environment. . . . . . . . . . . . . . . . . . . . . . . 308
19.2 The requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Chapter 20. Installing and configuring the scenario infrastructure. . . . 311
20.1 Messaging infrastructure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
20.2 The RedTenant Web application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
20.3 Installing the RedTenant application. . . . . . . . . . . . . . . . . . . . . . . . . . . 315
20.4 Preparing the environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
20.4.1 Creating the RedTenant application server. . . . . . . . . . . . . . . . . . 316
20.4.2 Configuring resources for the WebSphere MQ JMS provider. . . . 317
20.4.3 Deploying the application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
20.4.4 A quick test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
20.5 Create the back-end application database . . . . . . . . . . . . . . . . . . . . . . 328
20.6 Create the back-end application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Part 4. Configuring and testing adapters and business objects . . . . . . . . . . . . . . . . . . . 333
viii WebSphere Business Integration Adapters