Foreword xv Preface xvii Acknowledgments xxiv PART 1 Patterns and J2EE 2 CHAPTER 1 Introduction 4 What Is J2EE? 6 What Are Patterns? 7 Historical References 7 Defining a Pattern 7 Categorizing Patterns 9 J2EE Pattern Catalog 10 Continuous Evolution 10 How to Use the J2EE Pattern Catalog 11 Benefits of Using Patterns 12 Patterns, Frameworks, and Reuse 14 Summary 15 CHAPTER 2 J2EE Platform Overview 16 A Brief Perspective 17 Application Servers--The New Breed 19 Convergence of Java Technologies 19 The Rise of the J2EE Platform 20 J2EE Value Proposition 21 J2EE Platform 22 J2EE Architecture 22 Java 2 Standard Edition 24 J2EE Application Components and Containers 25 Standard Services 26 J2EE Platform Roles 27 Deployment Descriptors 29 J2EE Patterns and J2EE Platform 30 Summary 31 PART 2 Design Considerations, Bad Practices, and Refactorings 32 CHAPTER 3 Presentation Tier Design Considerations and Bad Practices 34 Presentation Tier Design Considerations 35 Session Management 35 Controlling Client Access 38 Validation 43 Helper Properties--Integrity and Consistency 46 Presentation Tier Bad Practices 49 Control Code in Multiple Views 49 Exposing Presentation-Tier Data Structures to Business Tier 50 Exposing Presentation-Tier Data Structures to Domain Objects 5 I Allowing Duplicate Form Submissions 51 Exposing Sensitive Resources to Direct Client Access 52 Assuming Will Reset Bean Properties 52 Creating Fat Controllers 53 CHAPTER 4 Business Tier Design Considerations and Bad Practices 54 Business Tier Design Considerations 55 Using Session Beans 55 Using Entity Beans 59 Caching Enterprise Bean Remote References and Handles 62 Business and Integration Tiers Bad Practices 63 Mapping Object Model Directly to Entity Bean Model 63
Mapping Relational Model Directly to Entity Bean Model 63 Mapping Each Use Case to a Session Bean 64 Exposing All Enterprise Bean Attributes via Getter/Setter Methods 65 Embedding Service Lookup in Clients 65 Using Entity Bean as Read-Only Object 66 Using Entity Beans as Fine-Grained Objects 67 Storing Entire Entity Bean-Dependent Object Graph 68 Exposing EJB-related Exceptions to Non-EJB Clients 68 Using Entity Bean Finder Methods to Return a Large Results Set 69 Client Aggregates Data from Business Components 70 Using Enterprise Beans for Long-Uved Transactions 70 Stateless Session Bean Reconstructs Conversational State for Each Invocation 71 CHAPTER 5 J2EE Refactorings 72 Presentation Tier Refactorings 73 Introduce a Controller 74 Introduce Synchronizer Token 77 Localize Disparate Logic 83 Hide Presentation Tier-Specific Details From the Business Tier 91 Remove Conversions from View 96 Hide Resource From a Client 100 Business and Integration Tier Refactorings 104 Wrap Entities With Session 104 Introduce Business Delegate 106 Merge Session Beans 108 Eliminate Inter-Entity Bean Communication 110 Move Business Logic to Session 112 General Refactorings 113 Separate Data Access Code 113 Refactor Architecture by Tiers 116 Use A Connection Pool 119 PART 5 J2EE Pattern Catalog 122 CHAPTER 6 J2EE Patterns Overview 124 What Is a Pattern? 126 Identifying a Pattern 127 The Tiered Approach 128 J2EE Patterns 130 Presentation Tier Patterns 130 Business Tier Patterns 131 Integration Tier Patterns 132 Guide to the Catalog 132 Terminology 132 Use of UML 137 Pattern Template 138 J2EE Pattern Relationships 140 Relationship to Known Patterns 143 Patterns Roaclmap 144 Summary 149 CHAPTER 7 Presentation Tier Patterns 150 Intercepting Filter 152 Context 152 Problem 152 Forces 153 Solution 153 Consequences 170 Related Patterns 170 Front Controller 172 Context 172 Problem 172 Forces 172 Solution 173 Consequences 184 Related Patterns 185 View Helper 186 Context 186 Problem 186 Forces 186 Solution 186 Consequences 201 Related Patterns 202 Composite View 203 Context 203 Problem 203 Forces 203 Solution 203 Consequences 212 Sample Code 213 Related Patterns 215 Service to Worker 216 Context 216 Problem 216 Forces 216 Solution 217 Consequences 222 Sample Code 222 Related Patterns 230 Dispatcher View 231 Context 231 Problem 231 Forces 231 Solution 232 Consequences 238 Sample Code 239 Related Patterns 244 CHAPTER 8 Business Tier Patterns 246 Business Delegate 248 Context 248 Problem 248 Consequences 321 Sample Code 323 Related Patterns 335 Value Object Assembler 339 Context 339 Problem 339 Forces 340 Solution 341 Consequences 345 Sample Code 347 Related Patterns 351 Value List Handler 353 Context 353 Problem 353 Forces 354 Solution 354 Consequences 358 Sample Code 360 Related Patterns 366 Service Locator 367 Context 367 Problem 367 Forces 369 Solution 369 Consequences 379 Sample Code 380 Related Patterns 385 CHAPTER 9 Integration Tier Patterns 388 Data Access Object 390 Context 390 Problem 390 Forces 391 Solution 391 Consequences 397 Sample Code 399 Related Patterns 407 Service Activator 408 Context 408 Problem 408 Forces 409 Solution 409 Consequences 413 Sample Code 414 Related Patterns 420 EPILOGUE J2EE Patterns Applied 422 PSA Overview 423 Use Case Model 424 Use Cases, Patterns, and Pattern Frameworks 426 Create Project Use Case 426 Pattern Identification 426 Pattern Realization 428 Reserve Resource Use Case 430 Pattern Identification 430 Pattern Realization 431 Find Available Resources Use Case 433 Pattern Identification 434 Pattern Realization 435 Bibliography 439 Apache Software License 443 Index 445