Building Hello World with Rational Application Developer

Document Sample
Building Hello World with Rational Application Developer Powered By Docstoc
					                                                                                             Contents
             Forward . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix

Part 1       Introduction to the Portlet and Portal Paradigm . . . . . . . . . . . . . . . . 1
             JSR 168 Portlet Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
             Why two parts?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

Chapter 1:   Portals and Portlets: The Basics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
             What is a Portal? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
             Portal Applications and Portlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
             Portal Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
             Creating Portlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
             More About Tools. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
             Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
             References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

Chapter 2:   Writing your first Portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
             Anatomy of a Portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
             Starting Hello World. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
             Building Hello World with Rational Application Developer . . . . . . . . . 33
             A Minor Fix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
             Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Chapter 3:   Java Portlet API Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
             Portlet Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
             Portlet Mode and Window State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
             Customization Levels: Portlet Definitions, Portlet Entities,
               and Portlet Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
             Understanding the Portlet Data Model. . . . . . . . . . . . . . . . . . . . . . . . . . 59
             Portlet URLs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
             The Calendar Portlet Application Example . . . . . . . . . . . . . . . . . . . . . . 64
             Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

Chapter 4:   Java Portlet API Code Patterns and Best Practices . . . . . . . . . . . . . . 89
             Java Portlet API Code Patterns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
             JSF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
             WebWork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
             AJAH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
             Adopting Portlet Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
             Save Navigational State Conservatively. . . . . . . . . . . . . . . . . . . . . . . . 110
Contents




             Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
             References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

Chapter 5:   Languages and Markups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
             Internationalization and Localization. . . . . . . . . . . . . . . . . . . . . . . . . . 118
             WebSphere Portal’s Language Support . . . . . . . . . . . . . . . . . . . . . . . . 118
             Portlet Language Support Definition . . . . . . . . . . . . . . . . . . . . . . . . . . 119
             Localized JSPs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
             Resource Bundles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
             Java Standard Tag Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
             Internationalization and Localization for
                the Calendar Portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
             Changing a Language Dynamically . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
             A Word About Bidirectional Languages . . . . . . . . . . . . . . . . . . . . . . . 133
             Building a Portlet for Multiple Devices . . . . . . . . . . . . . . . . . . . . . . . . 133
             Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

Chapter 6:   Using Java Server Faces in your Portlets . . . . . . . . . . . . . . . . . . . . . 135
             Request Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
             JSF Widget Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
             Developing a Portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
             Pagination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
             Action Event. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
             Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
             Internationalization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
             Struts vs. JSF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
             Portlet Concepts Applied to JSF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
             Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

Part 2       Introduction to the Portlet and Portal Paradigm . . . . . . . . . . . . . . 171
             Building on the Java Portlet API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
             Book Scenarios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

Chapter 7:   Application Architecture and SOA . . . . . . . . . . . . . . . . . . . . . . . . . . 177
             What Is SOA?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
             Portal as an Onramp to SOA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
             How SOA May Affect a Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
             Process Integration and Composite Applications. . . . . . . . . . . . . . . . . 187
             Technology Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
             Back-End Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
             Portal Service Layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
             Reuse of the Data Access Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
             SOA Roadmap for Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
             Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
             References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209


vi
                                                                                                                CONTENTS




Chapter 8:    Fundamentals of Portlet Factory . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
              Portlet Factory Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
              Building Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
              Writing Your First Portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
              Creating a View Portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
              Building the Complete Services Layer. . . . . . . . . . . . . . . . . . . . . . . . . 252
              Regeneration and Change Propagation . . . . . . . . . . . . . . . . . . . . . . . . 256
              Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

Chapter 9:    Advanced Concepts in Portlet Factory . . . . . . . . . . . . . . . . . . . . . . . 259
              Building Forms Using the Portlet Factory . . . . . . . . . . . . . . . . . . . . . . 260
              Inter-Portlet Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
              Profiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
              Personalization Use Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
              Solutions Strategy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
              Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303

Chapter 10:   Inter-Portlet Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
              Cooperative Portlet Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
              Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
              Cooperative Portlet Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
              Building the Portlets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
              Source Portlet WSDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
              Source Portlet init Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
              Source Portlet doView Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
              Source Portlet processAction Method . . . . . . . . . . . . . . . . . . . . . . . . . 340
              Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
              References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

Chapter 11:   Security and the Credential Vault. . . . . . . . . . . . . . . . . . . . . . . . . . . 349
              Single Sign-On Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
              Introduction to the Credential Vault Service . . . . . . . . . . . . . . . . . . . . 352
              The Credential Vault Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
              Passive Credentials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
              Defining Administrative and System Slots . . . . . . . . . . . . . . . . . . . . . 374
              Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377

Chapter 12:   Workplace Forms Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
              IBM Workplace Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
              Workplace Forms Document Model . . . . . . . . . . . . . . . . . . . . . . . . . . 384
              Workplace Forms Hello World form and Portlet . . . . . . . . . . . . . . . . . 386
              Testing and Deploying Our Portlet. . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
              Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
              References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404



                                                                                                                        vii
Contents




Chapter 13:   Next Steps with Workplace Forms . . . . . . . . . . . . . . . . . . . . . . . . . . 405
              Workplace Forms Architectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
              Pre-Populating Workplace Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
              Keeping Form Submission Within Context of Your Portal
                Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
              Workplace Forms/Process Integration Models. . . . . . . . . . . . . . . . . . . 418
              Form Processing and Data Extraction . . . . . . . . . . . . . . . . . . . . . . . . . 425
              Inter-Portlet Communication and Workplace forms . . . . . . . . . . . . . . 429
              Workplace forms/proces Integration models . . . . . . . . . . . . . . . . . . . . 430
              Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432

Chapter 14:   Enhancing the User Experience with Ajax . . . . . . . . . . . . . . . . . . . 433
              Introduction to Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
              Ajax Processing Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
              Ajax in the Portal Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
              Ajax Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
              Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
              Security Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
              Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463

Appendix A:   Looking Toward V2.0 of the Java Portlet Specification . . . . . . . . . 465
              Coordination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
              Resource Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
              Ajax Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
              Better Support of Existing Web Frameworks. . . . . . . . . . . . . . . . . . . . 470
              Client-Capabilities Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
              Advanced Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
              Portlet Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
              Portlet Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
              Further Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472

Appendix B:   Setting Up the Data Components . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
              Using iBATIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
              Data Access Using a Singleton Model. . . . . . . . . . . . . . . . . . . . . . . . . 474
              Quick Start Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
              Custom Setup Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482




viii