Monday, January 17, 2011

VisualAge for Java Enterprise Version 2 Data Access Beans - Servlets - CICS Connector






Contents
Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
The Team That Wrote This Redbook. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii
Comments Welcome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii
Part 1. VisualAge for Java Enterprise Version 2. . . . . . . . . . . . . . . . .1
Chapter 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 VisualAge for Java Version 2 Professional. . . . . . . . . . . . . . . . . . . . . . . . 4
Support for Java Development Kit 1.1.6 . . . . . . . . . . . . . . . . . . . . . . . . . . 4
New Integrated Development Environment Features . . . . . . . . . . . . . . . 4
New Visual Composition Editor Features. . . . . . . . . . . . . . . . . . . . . . . . . 4
JavaBeans for Easy Access to Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 VisualAge for Java Version 2 Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . 5
Java Team Programming Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Source Code Management Tools Integration . . . . . . . . . . . . . . . . . . . . . . 5
Open Tool Integrator APIs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Enterprise Toolkits for Workstation, AS/400, and OS/390 . . . . . . . . . . . 6
Enterprise Access Builders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Automated Object to Relational Mapping . . . . . . . . . . . . . . . . . . . . . . . . . 7
Servlet Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
IDL Development Environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Support for SanFrancisco, Tivoli, Lotus, and Component Broker . . . . . . 8
AIX Development Environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Chapter 2. Relational Database Access with Data Access Beans . 9
2.1 Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Data Access Beans versus Data Access Builder . . . . . . . . . . . . . . . . . . . 11
2.2 Development Process with Data Access Beans . . . . . . . . . . . . . . . . . . . 11
Loading the Data Access Bean Feature . . . . . . . . . . . . . . . . . . . . . . . . . 11
Using the Select Bean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Development Process Step by Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3 Building a Sample Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Application Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Development Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Creating the Project and the Package . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Creating the Sample Panel and the Select Bean . . . . . . . . . . . . . . . . . . 21
Building the User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Improving the Select Bean. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Run the Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Chapter 3. Enterprise Application Development with Servlets . 47
3.1 Server-Side Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Common Gateway Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
What Are Servlets? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Servlet Creation Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Web Server Consideration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.2 Inside Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Simple Servlet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Invoking a Servlet in HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Invoking a Servlet with Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
HttpServlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Complex Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.3 Servlet Builder Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
How Do Servlet Builder Beans Work?. . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Advantages of the Servlet Builder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Visual Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Servlet Builder Visual Beans. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Servlet Builder Nonvisual Beans. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Form Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Cookie Wrapper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Session Data Wrapper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Run Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Invoking Another Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.4 Creating Visual Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Simple Servlet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Server-Side Include Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Counter Servlet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Passing Data to the Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.5 Advanced Servlet Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Advanced HTML Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Servlet Chaining. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Keeping and Passing Data between Servlets . . . . . . . . . . . . . . . . . . . . . 81
Servlet Branch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Condition Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Disable Caching of Generated HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Servlet with JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Chapter 4. CICS Access with the CICS Connector . . . . . . . . . . . . . 91
4.1 The Enterprise Access Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.2 Connectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.3 The CICS Connector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
CICS Connector Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
CICS Connector Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.4 CICS Universal Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Communcation Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Client Customization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Client Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.5 CICS Transaction Gateway. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
What the CICS Transaction Gateway Provides . . . . . . . . . . . . . . . . . . 101
How the CICS Transaction Gateway Accesses CICS . . . . . . . . . . . . . . 101
4.6 A Discussion Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.7 Accessing Enterprise Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Structure Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Records and the Java Record Framework. . . . . . . . . . . . . . . . . . . . . . . 105
Record Bean Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Navigators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Business Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Mappers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Executing the Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
4.8 A Review of Accessing Enterprise Data . . . . . . . . . . . . . . . . . . . . . . . . 124
Part 2. Implementing the ATM Application . . . . . . . . . . . . . . . . . . .125
Chapter 5. ATM Application Requirements and ATM Database 127
5.1 ATM Application Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
5.2 ATM Database Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Sample Data of ATM Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Chapter 6. ATM Application Business Model . . . . . . . . . . . . . . . . . 137
6.1 Application Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Application Layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Application Layer Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
6.2 Business Object Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Business Logic Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Testing the Business Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
6.3 Application Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Persistence Layer Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Controller Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Controller and Persistence Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Implementing the Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
6.4 Persistence Layer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Chapter 7. ATM Application Persistence Using Data Access Beans
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
7.1 Persistence Layer Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
7.2 Database Access with ATM Database Beans . . . . . . . . . . . . . . . . . . . . 165
PIN Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
List of Accounts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Debit and Credit Transactions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Transaction History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
7.3 Business Object Creation with ATM Database Beans . . . . . . . . . . . . 178
PIN Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
List of Accounts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Debit and Credit Transactions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Transaction History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
7.4 Implementing the Persistence Interface . . . . . . . . . . . . . . . . . . . . . . . 186
AtmDB Bean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Testing the Implementation of the Persistence Interface . . . . . . . . . . 188
7.5 Preparation for Servlet Usage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Chapter 8. Swing GUI for ATM Application . . . . . . . . . . . . . . . . . . 191
8.1 Design of the GUI Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Application Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Panel Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
8.2 Implementation of the Application Panels . . . . . . . . . . . . . . . . . . . . . . 195
Card Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
PIN Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Select Account Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Transaction Panel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
ATM Applet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
8.3 Running the ATM GUI Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Chapter 9. ATM Application Using Servlets . . . . . . . . . . . . . . . . . . 205
9.1 Create a Skeleton Controller Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . 206
9.2 Servlet Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Card Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
PIN Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Account Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Transaction Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Thank You Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
9.3 Application Flow Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
9.4 Implementing the Controller Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Preparation for Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Customer Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
PIN Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Account Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Deposit Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Withdraw Transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Query Transaction History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Termination and Restart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Disable Caching of the Output HTML . . . . . . . . . . . . . . . . . . . . . . . . . 233
Controller Servlet Total Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
9.5 Testing the ATM Servlet Application . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Built-in HTTP Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Using the WebSphere Application Server. . . . . . . . . . . . . . . . . . . . . . . 235
Using the ATM Servlet Application with DB2 . . . . . . . . . . . . . . . . . . . 236
9.6 Deploying Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Chapter 10. ATM Application with the CICS Connector . . . . . . . 239
10.1 A Review of the ATM Application Design . . . . . . . . . . . . . . . . . . . . . 240
The Persistence Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
10.2 Task Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Only a Subset of the Interface Methods . . . . . . . . . . . . . . . . . . . . . . . . 242
CICS Infrastructure Assumptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
CICS Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Tasks Implemented . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
10.3 CICS Infrastructure Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . 243
CICS Server Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
CICS Client Configuration and Startup . . . . . . . . . . . . . . . . . . . . . . . . 244
Starting the CICS Transaction Gateway . . . . . . . . . . . . . . . . . . . . . . . 245
10.4 Initial Creation of AtmCICS Class . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
10.5 ATM Header for the COMMAREA . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
10.6 CICS Transaction to Retrieve an ATM Card . . . . . . . . . . . . . . . . . . . 246
CICS COBOL Program ATMCARDI . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Card Record Bean. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Card Command. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Building a Navigator to Execute the CICS Transaction . . . . . . . . . . . 252
Implement the extGetCard Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
10.7 Using Mappers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Input Mapper for Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Output Mapper for Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Create a Command with Mappers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Execute the CICS Transaction with Mappers . . . . . . . . . . . . . . . . . . . 257
Change the AtmCICS Class to Use the Mappers . . . . . . . . . . . . . . . . . 259
10.8 Test the CICS Card Transaction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Prepare Test Output for Card Transaction. . . . . . . . . . . . . . . . . . . . . . 260
Testing Card Transaction with a Scrapbook Script . . . . . . . . . . . . . . . 261
Testing without CICS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
10.9 Discussion Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
10.10 CICS Transaction to Retrieve Accounts . . . . . . . . . . . . . . . . . . . . . . 263
CICS COBOL Program ATMACCNT . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Accounts Record Bean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Accounts Input Mapper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Accounts Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Navigator to Execute the CICS Accounts Transaction. . . . . . . . . . . . . 267
Implement the extGetAccounts Method . . . . . . . . . . . . . . . . . . . . . . . . 270
10.11 Testing the CICS Accounts Transaction. . . . . . . . . . . . . . . . . . . . . . 270
Prepare Test Output for Accounts Transaction . . . . . . . . . . . . . . . . . . 270
Testing the Accounts Transaction with a Scrapbook Script . . . . . . . . 271
10.12 Testing the ATM Application with CICS . . . . . . . . . . . . . . . . . . . . . 272
Testing the Real Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
10.13 Using an Advanced Navigator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Design of a Navigator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Implementation of the Navigator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Testing the Navigator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
10.14 Implementation of the Back-End Programs. . . . . . . . . . . . . . . . . . . 277
10.15 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Chapter 11. ATM Application Using MQSeries. . . . . . . . . . . . . . . . 279
11.1 A Brief Overview of MQSeries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Messages and Queues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
MQSeries Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
MQSeries Clients and Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
11.2 MQSeries Version 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
11.3 About MQSeries and Java. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
MQSeries Client for Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
MQSeries Bindings for Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
The MQSeries Java Programming Interface . . . . . . . . . . . . . . . . . . . . 289
11.4 Implementing the ATM Application with MQSeries . . . . . . . . . . . . . 291
11.5 MQSeries Queue Manager and Objects . . . . . . . . . . . . . . . . . . . . . . . 292
Create a Queue Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Define MQSeries Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Command File to Start the Queue Manager. . . . . . . . . . . . . . . . . . . . . 294
11.6 Imprting MQSeries into VisualAge for Java . . . . . . . . . . . . . . . . . . 294
11.7 Create an MQAccess Bean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Sample MQSeries Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
MQAccess Bean. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Implement the MQAccess Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
11.8 ATM MQSeries Design Choices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Conforming to the ATM Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Unit of Work Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
11.9 ATM Request Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
AtmRequest Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Card Request. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Accounts Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
11.10 ATM Response Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
AtmResponse Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Card Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Accounts Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
11.11 ATM Access Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Card Access Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Account Access Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
11.12 Persistence Interface with MQSeries . . . . . . . . . . . . . . . . . . . . . . . . 315
AtmMQ Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
11.13 Adding Additional Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
Create a Class for the MQSeries Request . . . . . . . . . . . . . . . . . . . . . . . 319
Create a Class for the MQSeries Response . . . . . . . . . . . . . . . . . . . . . . 320
Create a Transaction-Specific Access Class . . . . . . . . . . . . . . . . . . . . . 320
Modify the AtmMQ Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
Create a Back-End Application Program . . . . . . . . . . . . . . . . . . . . . . . 324
11.14 Back-End Programs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Java Back-End Server Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Testing the ATM MQSeries Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
Testing the ATM Application with MQSeries. . . . . . . . . . . . . . . . . . . . 331
CICS COBOL Back-End Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Chapter 12. Deployment of the ATM Application Implementations
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
12.1 Deployment of Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Prerequisites for Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Exporting an Application from VisualAge for Java . . . . . . . . . . . . . . . 334
Deployment Process for Applications . . . . . . . . . . . . . . . . . . . . . . . . . . 335
12.2 Deployment of Applets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Exporting Applets from VisualAge for Java . . . . . . . . . . . . . . . . . . . . . 336
Deployment Process for Applets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
12.3 Deployment of Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Deployment of Servlets for Lotus Domino Go Webserver . . . . . . . . . . 339
Target Location. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Class Path Setting for Web Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
12.4 Deployment of Applications with Swing. . . . . . . . . . . . . . . . . . . . . . . 344
12.5 Tailoring the Web Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Chapter 13. High-Performance Compiler and Remote Debugger
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
13.1 High-Performance Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Compiler Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Base Java Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Swing Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Execution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
13.2 Compiling the ATM Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Export the ATM Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Compile the ATM Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Compile the Data Access Beans. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Compile the DB2 JDBC Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Remove the Object Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
13.3 Run the Compiled ATM Application. . . . . . . . . . . . . . . . . . . . . . . . . . 350
13.4 Alternative Compile Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
13.5 Remote Debugger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Reasons for Remote Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Running the Remote Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
13.6 Remote Debugging of the ATM Application. . . . . . . . . . . . . . . . . . . . 354
13.7 Debugging a Compiled Program. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Appendixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .359
Appendix A. Installation, Setup, and Configuration . . . . . . . . . . 361
A.1 Setup of VisualAge for Java Enterprise Version 2 . . . . . . . . . . . . . . . 362
A.2 Setup for Data Access Beans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
A.3 Setup for the Servlet Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Web Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
A.4 Setup for the CICS Connector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
Setup of the CICS Server and Client. . . . . . . . . . . . . . . . . . . . . . . . . . . 365
COBOL Sample Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
A.5 Setup for MQSeries on Windows NT . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Installation Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Queue Manager and Queue Setup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
VisualAge for Java Setup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
MQSeries CICS Bridge Program. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
A.6 Installation of the Redbook Samples . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Appendix B. Special Notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
Appendix C. Related Publications . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
C.1 International Technical Support Organization Publications . . . . . . . 380
C.2 Redbooks on CD-ROMs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
C.3 Other Publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
How to Get ITSO Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
How IBM Employees Can Get ITSO Redbooks. . . . . . . . . . . . . . . . . . . . . . 383
How Customers Can Get ITSO Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . 384
IBM Redbook Order Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
List of Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
ITSO Redbook Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395

Another Java Books
Another J2EE Books
Download

No comments:

Post a Comment

Related Posts with Thumbnails

Put Your Ads Here!