Web Development
with TIBCO General
Interface
Building AJAX Clients for Enterprise SOA
Anil Gurnani
/TAddison-Wesley
Upper Saddle River, NJ • Boston • Indianapolis • San Francisco
New York • Toronto • Montreal • London • Munich • Paris • Madrid
Cape Town • Sydney • Tokyo • Singapore • Mexico City
Table of Contents
Foreword by Michael Peachey xiii
Foreword by Luke Birdeau xiv
Introduction 1
1 What Is TIBCO General Interface? 11
Tools and Utilities 12
Web Application Model 14
TIBCO General Interface Application 16
General Interface's Performance Edge 17
Compiler in the Browser 17
Rapid Prototyping Tool 18
2 Understanding General Interface Architecture 19
Model View Controller Architecture 19
General Interface Application Life Cycle 20
Application Object Model 23
Common Data Format 23
JavaScript Framework 25
JavaScript API 26
Commonly Used Classes 27
Application Controller 27
Cache 28
Custom Classes in JavaScript for General Interface 28
XSL Style Sheets 29
Value Templates 30
XML Transformers 30
3 Quick Start TIBCO General Interface 33
Building and Packaging Standalone Prototypes 33
Installing TIBCO General Interface 34
Launching Gl Builder 36
Internet Explorer 7 on Windows 37
Mozilla Firefox on Windows 37
Mozilla Firefox on Macintosh 39
Gl Workspace 39
Building the Application 41
viii Contents
Deploying General Interface Applications 45
Deploying the Application as a Standalone Prototype 45
Deploying the Application Under IIS 47
Deploying the Application Under Apache Web Server 47
Deploying the Application Under Tomcat 48
Deploying the Application as a WAR File Under Tomcat 49
4 Working with XML and XSL 57
XML Transformers 59
XML/XSL Merge Tool 63
XML Mapping Utility 65
5 Component Gallery 73
Component Categories 73
System Components 74
Block 75
Containers 77
Form Elements 84
Matrix 90
Menus and Toolbars 107
Miscellaneous 109
Component Properties 112
6 Sharing Assets Across Multiple Applications 125
Advantages of Sharing Components 125
Shared Components in General Interface 126
Building Shared Components with Gl Builder 127
Sample Applications 128
Building the Announcements Panel 128
Building the Customer Service Panel 130
Building the Ad Banner 132
Building the Custom Tabbed Pane 133
Editing Component XML Files 135
Building the Banking Application 136
Building the Investing Application 137
Contents ix
Object-Oriented JavaScript—Extending General
Interface Widgets 141
Prototype Inheritance 142
Defining Classes in General Interface 144
Defining Interfaces in General Interface 145
Defining Packages in General Interface 146
General Interface Event Model 146
Best Practices 148
Directory Structure 148
JavaScript Files 148
Dynamic Class Loading 149
Application-Level Events 149
Sample Code 149
MultiSelectMenu 149
Building a Sample Using MultiSelectMenu 153
Advanced Features of Matrix 157
Rendering Tabular Data 157
Rendering a Tree Structure 159
Using XML Transformers 160
Using Value Templates 162
Using Format Handlers 165
Displaying Controls in Columns 167
Available Controls in Matrix Columns 168
Manipulating Data Dynamically 172
Commonly Used Methods of the Matrix Class 173
Sample Applications 174
Integrating with Web Services 177
Web Services Related Standards 177
General Interface and Web Services 178
Building a Web Service 178
Using Java 178
Using .NET 189
Deploying a Web Service 196
Deploying Under Axis2 in Tomcat 196
Deploying Under IIS 197
x Contents
Developing a Web Service Client Using General Interface
200
Building GUI Screens for the Sample General Interface
Client 200
Mapping the Response to CDF Document 203
Mapping Input Fields to Request Messages 205
10 Integrating with Portals 209
Anatomy of a Portal 210
Portal Value Proposition 211
Aggregation of Content from Various Applications and
Sources 211
Federated Search Across All Data Sources 212
Entitlements 212
Private Labeling and Branding 212
Personalization 212
Common Infrastructure 212
Global Reach 213
High Availability 213
Support, Operations, and Monitoring 213
Architectural Considerations 213
Use of General Interface Framework 213
Gl Cache Utilization 213
Namespaces 214
Entering and Leaving the Page 214
Minimizing Asynchronous Calls 214
Versions of General Interface 214
Using <iframe> Tags 214
Using <div> and <span> Tags 215
Using JSR 168 216
Installing JBoss Portal 216
Deploying Gl Portlets to JBoss Portal 217
11 Integrating with Databases 221
Building the Client 221
Setting Up the Database 226
Integrating Using .NET 227
Integrating Using J2EE 230
Contents xi
Building a Master/Detail Sample Application 233
Building a Paginated Grid Example 237
12 Integrating with IVIessaging Systems 247
Architectural Considerations 247
Browser Resources 247
Number of Pending Requests 248
Push Versus Pull 248
Server-Side Thread 248
Server-Side State 248
Message Transformation 249
Message Filtering 249
AJAX-Based Solution Using TIBCO General Interface 249
Installing ActiveMQ 249
Rolling Grid Example 250
Building the Client 252
Building the Complete Application Using Eclipse 256
Publish Subscribe Example 268
13 Integrating with SOA and ESBs 275
Overview of ESB 275
OASIS and OSOA 278
JBI and SCA 278
SCA-Based Solutions 279
JBI-Based Solutions 279
TIBCO Active Matrix 280
Instaling TIBCO Active Matrix 280
Active Matrix Environment 281
Active Matrix Service Example 284
Consuming the Response from an AMX Service in
General Interface 291
14 Creating Charts in General Interface 295
Charting Components in General Interface 295
Building the StockPrice Example 298
Building the Web Application 305
Contents
15 Using TIBCO PageBus 311
What Is PageBus? 311
Obtaining PageBus 312
Publishing Messages 312
Subscribing to Messages 313
Using the Store/Query Interface 314
Building the Sample Application 314
16 Optimizing Performance 323
Measuring Performance 323
Using the Debug Version 324
Enabling Logging in General Interface 324
Viewing Benchmark Logs 324
Identifying and Eliminating Redundant Calls to Render 326
Using Asynchronous Loading 328
Using Dynamic Class Loading 330
Using the Merge Tool 331
Preferring XSLT over JavaScript 331
Using Paging Models in Matrix 331
Index 333