Front 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