Monday, August 30, 2010

DESIGNING ENTERPRISE APPLICATIONS 2













Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xiii
Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xv
About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..xix
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
1.1 Challenges of Enterprise Application Development. . . . . . . . . . . . . . 2
1.1.1 Programming Productivity . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 Integration with Existing Systems. . . . . . . . . . . . . . . . . . . . . 4
1.1.3 Freedom of Choice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.4 Response to Demand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.5 Maintaining Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 The Platform for Enterprise Solutions . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 J2EE Platform Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2 J2EE Platform Benefits . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3 J2EE Application Scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.1 Multitier Application Scenario . . . . . . . . . . . . . . . . . . . . . . 16
1.3.2 Stand-Alone Client Scenario . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.3 Web-Centric Application Scenario . . . . . . . . . . . . . . . . . . . 19
1.3.4 Business-to-Business Scenario . . . . . . . . . . . . . . . . . . . . . . 20
1.4 How This Book Is Organized . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.6 References and Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2 J2EE Platform Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
2.1 Component Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.1.1 Types of J2EE Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.1.2 Web Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.1.3 Enterprise JavaBeans Components . . . . . . . . . . . . . . . . . . . 28
2.1.4 Components, Containers, and Services . . . . . . . . . . . . . . . . 31
2.2 Platform Roles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2.1 J2EE Product Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.2.2 Application Component Provider . . . . . . . . . . . . . . . . . . . . 33
2.2.3 Application Assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.2.4 Deployer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.2.5 System Administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.2.6 Tool Provider. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.3 Platform Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3.1 Naming Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3.2 Deployment Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.3.3 Transaction Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.3.4 Security Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.4 Service Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.4.1 JDBC API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.4.2 Java Transaction API and Service. . . . . . . . . . . . . . . . . . . . 43
2.4.3 Java Naming and Directory Interface . . . . . . . . . . . . . . . . . 43
2.4.4 J2EE Connector Architecture . . . . . . . . . . . . . . . . . . . . . . . 43
2.4.5 Java API for XML Processing Technology . . . . . . . . . . . . 44
2.5 Communication Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.5.1 Internet Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.5.2 Remote Method Invocation Protocols. . . . . . . . . . . . . . . . . 46
2.5.3 Object Management Group Protocols . . . . . . . . . . . . . . . . . 46
2.5.4 Messaging Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.5.5 Data Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.6 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.7 References and Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3 The Client Tier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
3.1 Client Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.1.1 Network Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.1.2 Security Considerations. . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.1.3 Platform Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2 General Design Issues and Guidelines . . . . . . . . . . . . . . . . . . . . . . . 54
3.3 Design Issues and Guidelines for Browser Clients. . . . . . . . . . . . . . 54
3.3.1 Presenting the User Interface . . . . . . . . . . . . . . . . . . . . . . . 55
3.3.2 Validating User Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.3.3 Communicating with the Server . . . . . . . . . . . . . . . . . . . . . 58
3.3.4 Managing Conversational State . . . . . . . . . . . . . . . . . . . . . 59
3.4 Design Issues and Guidelines for Java Clients . . . . . . . . . . . . . . . . . 60
3.4.1 Presenting the User Interface . . . . . . . . . . . . . . . . . . . . . . . 61
3.4.2 Validating User Inputs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.4.3 Communicating with the Server . . . . . . . . . . . . . . . . . . . . . 65
3.4.4 Managing Conversational State. . . . . . . . . . . . . . . . . . . . . . 69
3.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.6 References and Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4 The Web Tier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
4.1 The Purpose of the Web Tier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.2 Web-Tier Technologies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.2.1 Traditional Web-Tier Technologies . . . . . . . . . . . . . . . . . . 76
4.2.2 Web-Tier Technologies in the J2EE Platform. . . . . . . . . . . 78
4.2.3 The Web Container . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.2.4 Java Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.2.5 JavaServer Pages (JSP) Technology . . . . . . . . . . . . . . . . . . 80
4.2.6 Web-Tier Technology Guidelines . . . . . . . . . . . . . . . . . . . . 82
4.3 Web-Tier Application Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.4 Web-Tier Application Framework Design . . . . . . . . . . . . . . . . . . . . 94
4.4.1 Structuring the Web Tier . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.4.2 Web-Tier MVC Controller Design . . . . . . . . . . . . . . . . . . . 98
4.4.3 Web-Tier MVC View Design . . . . . . . . . . . . . . . . . . . . . . 110
4.4.4 Web-Tier MVC Model Design . . . . . . . . . . . . . . . . . . . . . 113
4.4.5 Web Application Frameworks. . . . . . . . . . . . . . . . . . . . . . 114
4.4.6 Separating Business Logic from Presentation. . . . . . . . . . 115
4.4.7 Web-Tier State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
4.4.8 Distributable Web Applications . . . . . . . . . . . . . . . . . . . . 123
4.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
4.6 References and Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
5 The Enterprise JavaBeans Tier. . . . . . . . . . . . . . . . . . . . . . . . . . . . .129
5.1 Business Logic and Business Objects. . . . . . . . . . . . . . . . . . . . . . . 130
5.1.1 Common Requirements of Business Objects . . . . . . . . . . 131
5.2 Enterprise Beans as J2EE Business Objects . . . . . . . . . . . . . . . . . . 134
5.2.1 Enterprise Beans and EJB Containers . . . . . . . . . . . . . . . . 136
5.3 Remote and Local Client Views . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
5.3.1 Guidelines for Using Local or Remote Client Views . . . . 141
5.3.2 Entity Beans and Local Client Views . . . . . . . . . . . . . . . . 142
5.4 Entity Beans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
5.4.1 Guidelines for Using Entity Beans . . . . . . . . . . . . . . . . . . 143
5.4.2 Entity Bean Persistence . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
5.4.3 When to Use Bean-Managed Persistence . . . . . . . . . . . . . 149
5.5 Session Beans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
5.5.1 Stateful Session Beans . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
5.5.2 Stateless Session Beans. . . . . . . . . . . . . . . . . . . . . . . . . . . 151
5.6 Message-Driven Beans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
5.6.1 Uses of Message-Driven Beans. . . . . . . . . . . . . . . . . . . . . 154
5.6.2 Example: Invoice Message-Driven Bean . . . . . . . . . . . . . 155
5.7 Design Guidelines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
5.7.1 Remote versus Local Client Access for Entity Beans. . . . 157
5.7.2 Session Beans as a Facade to Entity Beans. . . . . . . . . . . . 157
5.7.3 Fine-Grained versus Coarse-Grained Object Access . . . . 158
5.7.4 Master-Detail Modeling Using Enterprise Beans . . . . . . . 160
5.7.5 Data Access Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
5.7.6 Implementing an Entity Bean without a Create Method. . 163
5.7.7 Representing References to Entity Beans . . . . . . . . . . . . . 163
5.8 Portability Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
5.8.1 Typecast Remote References . . . . . . . . . . . . . . . . . . . . . . 165
5.8.2 Mark Non-Serializable Fields Transient . . . . . . . . . . . . . . 165
5.8.3 Bean-Managed Persistence and Portability. . . . . . . . . . . . 166
5.9 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
5.10 References and Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
6 Integrating with the Enterprise Information System Tier . . . . .171
6.1 Integration Scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
6.1.1 An Internet E-Store Application . . . . . . . . . . . . . . . . . . . . 172
6.1.2 An Intranet Human Resources Application . . . . . . . . . . . 174
6.1.3 A Distributed Purchasing Application . . . . . . . . . . . . . . . 174
6.1.4 An Order Fulfillment Application. . . . . . . . . . . . . . . . . . . 176
6.2 J2EE Integration Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
6.2.1 J2EE Connector Architecture . . . . . . . . . . . . . . . . . . . . . . 177
6.2.2 Java Message Service API . . . . . . . . . . . . . . . . . . . . . . . . 179
6.2.3 JDBC and RDBMS Access. . . . . . . . . . . . . . . . . . . . . . . . 180
6.3 Application Integration Design Approaches. . . . . . . . . . . . . . . . . . 181
6.3.1 Synchronous Integration . . . . . . . . . . . . . . . . . . . . . . . . . . 182
6.3.2 Asynchronous Integration . . . . . . . . . . . . . . . . . . . . . . . . . 183
6.3.3 Comparing Approaches. . . . . . . . . . . . . . . . . . . . . . . . . . . 185
6.3.4 Data Integration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
6.4 Developing an Integration Layer . . . . . . . . . . . . . . . . . . . . . . . . . . 186
6.4.1 Programming Access to Data and Functions . . . . . . . . . . 187
6.4.2 Using Tools for EIS Integration . . . . . . . . . . . . . . . . . . . . 187
6.4.3 Developing EIS Access Objects . . . . . . . . . . . . . . . . . . . . 188
6.4.4 Guidelines for Connection Management. . . . . . . . . . . . . . 193
6.4.5 Security Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
6.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
6.6 References and Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
7 Packaging and Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201
7.1 Packaging Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
7.2 Roles and Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
7.2.1 Application Component Provider Tasks . . . . . . . . . . . . . . 204
7.2.2 Application Assembler Tasks . . . . . . . . . . . . . . . . . . . . . . 206
7.2.3 Deployer Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
7.3 Packaging J2EE Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
7.3.1 EJB Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
7.3.2 EJB Module Packaging Guidelines . . . . . . . . . . . . . . . . . . 210
7.3.3 Web Modules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
7.3.4 Packaging Components into Web Modules . . . . . . . . . . . 215
7.3.5 Application Client Modules . . . . . . . . . . . . . . . . . . . . . . . 222
7.3.6 Resource Adapter Modules . . . . . . . . . . . . . . . . . . . . . . . . 222
7.4 Deployment Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
7.4.1 J2EE Naming Environment. . . . . . . . . . . . . . . . . . . . . . . . 223
7.4.2 Specifying Deployment Descriptor Elements . . . . . . . . . . 225
7.4.3 Naming Convention Recommendations . . . . . . . . . . . . . . 239
7.5 Deployment Tools. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
7.5.1 Deployment Tool Actions . . . . . . . . . . . . . . . . . . . . . . . . . 242
7.5.2 Deployment Tool Requirements . . . . . . . . . . . . . . . . . . . . 244
7.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
7.7 References and Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
8 Transaction Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251
8.1 Transactional Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
8.1.1 ACID Transaction Properties . . . . . . . . . . . . . . . . . . . . . . 252
8.1.2 Transaction Participants . . . . . . . . . . . . . . . . . . . . . . . . . . 253
8.1.3 Transaction Demarcation. . . . . . . . . . . . . . . . . . . . . . . . . . 253
8.1.4 Distributed Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . 253
8.1.5 Two-Phase Commit Protocol . . . . . . . . . . . . . . . . . . . . . . 255
8.2 J2EE Platform Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
8.2.1 Accessing Multiple Resources within a Transaction. . . . . 256
8.2.2 Transactions across Servers. . . . . . . . . . . . . . . . . . . . . . . . 258
8.3 J2EE Transaction Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
8.4 Client Tier Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
8.5 Web Tier Transaction Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . 261
8.6 Enterprise JavaBeans Tier Transactions . . . . . . . . . . . . . . . . . . . . . 262
8.6.1 Bean-Managed Transaction Demarcation. . . . . . . . . . . . . 263
8.6.2 Container-Managed Transaction Demarcation . . . . . . . . . 264
8.6.3 Transaction Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
8.6.4 Enterprise JavaBeans Tier Transaction Guidelines. . . . . . 266
8.7 EIS Tier Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
8.7.1 JTA Transactions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
8.7.2 Resource Manager Local Transactions . . . . . . . . . . . . . . . 269
8.7.3 EIS Tier Transaction Guidelines . . . . . . . . . . . . . . . . . . . . 269
8.7.4 Compensating Transactions . . . . . . . . . . . . . . . . . . . . . . . 269
8.7.5 Isolation Level. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
8.7.6 Performance with Multiple Resource Managers. . . . . . . . 273
8.8 J2EE Resource Manager Types . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
8.8.1 JDBC Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
8.8.2 JMS Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
8.8.3 J2EE Connector Architecture . . . . . . . . . . . . . . . . . . . . . . 274
8.9 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
8.10 References and Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
9 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279
9.1 Security Threats and Mechanisms . . . . . . . . . . . . . . . . . . . . . . . . . 279
9.2 Authentication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
9.2.1 Protection Domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
9.2.2 Authentication Mechanisms . . . . . . . . . . . . . . . . . . . . . . . 284
9.2.3 Authentication Call Patterns . . . . . . . . . . . . . . . . . . . . . . . 292
9.2.4 Exposing Authentication Boundaries with References. . . 293
9.3 Authorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
9.3.1 Declarative Authorization . . . . . . . . . . . . . . . . . . . . . . . . . 294
9.3.2 Programmatic Authorization . . . . . . . . . . . . . . . . . . . . . . . 295
9.3.3 Declarative versus Programmatic Authorization . . . . . . . 296
9.3.4 Isolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
9.3.5 Affects of Identity Selection . . . . . . . . . . . . . . . . . . . . . . . 297
9.3.6 Encapsulation for Access Control . . . . . . . . . . . . . . . . . . . 297
9.3.7 Controlling Access to J2EE Resources . . . . . . . . . . . . . . . 298
9.3.8 Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
9.4 Protecting Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
9.4.1 Integrity Mechanisms . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
9.4.2 Confidentiality Mechanisms . . . . . . . . . . . . . . . . . . . . . . . 305
9.4.3 Identifying Sensitive Components . . . . . . . . . . . . . . . . . . 305
9.4.4 Ensuring Confidentiality of Web Resources . . . . . . . . . . . 306
9.5 Auditing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
9.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
9.7 References and Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
10 J2EE Internationalization and Localization . . . . . . . . . . . . . . . . .311
10.1 Internationalization Concepts and Terminology. . . . . . . . . . . . . . . 312
10.1.1 Internationalization, Localization, and Locale . . . . . . . . . 312
10.1.2 Character Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
10.1.3 Encodings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
10.2 Using J2SE Internationalization APIs in J2EE Applications . . . . . 316
10.2.1 Resource Bundles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
10.2.2 Message Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
10.2.3 Date Formatting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
10.2.4 Collation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
10.3 Web Tier Internationalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
10.3.1 Tracking Locales and Encodings. . . . . . . . . . . . . . . . . . . . 321
10.3.2 Presentation Component Design . . . . . . . . . . . . . . . . . . . . 325
10.3.3 Internationalizing and Localizing JSP Pages . . . . . . . . . . 327
10.4 EIS Tier Internationalization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
10.4.1 Persistent Localized Data . . . . . . . . . . . . . . . . . . . . . . . . . 332
10.4.2 Internationalizing Database Schema . . . . . . . . . . . . . . . . . 334
10.5 Internationalized Application Design . . . . . . . . . . . . . . . . . . . . . . . 336
10.6 Internationalizing Applications with XML. . . . . . . . . . . . . . . . . . . 337
10.6.1 Generating Localized Dynamic Content with XSLT . . . . 337
10.6.2 Communicating Locale within an Application . . . . . . . . . 338
10.6.3 Communicating Locale among Applications . . . . . . . . . . 338
10.7 Localizing Error and Logging Messages . . . . . . . . . . . . . . . . . . . . 341
10.7.1 Client Messages and Application Exceptions . . . . . . . . . . 341
10.7.2 System Exceptions and Message Logging . . . . . . . . . . . . 344
10.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
10.9 References and Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
11 Architecture of the Sample Application . . . . . . . . . . . . . . . . . . . . .347
11.1 J2EE Architecture Approaches . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
11.1.1 Model-View-Controller Architecture . . . . . . . . . . . . . . . . 348
11.1.2 J2EE Design Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
11.2 Sample Application Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
11.3 Designing the Sample Application . . . . . . . . . . . . . . . . . . . . . . . . . 353
11.3.1 Choosing Application Tiers . . . . . . . . . . . . . . . . . . . . . . . 355
11.3.2 Choosing Local or Distributed Architecture . . . . . . . . . . . 357
11.4 Architecture of the Sample Application . . . . . . . . . . . . . . . . . . . . . 359
11.4.1 Application Web Site Architecture . . . . . . . . . . . . . . . . . . 360
11.4.2 Fulfillment Center Architecture . . . . . . . . . . . . . . . . . . . . 375
11.5 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
11.6 References and Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
Afterword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .385
Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .387
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .405

Download
Another J2EE books

No comments:

Post a Comment

Related Posts with Thumbnails

Put Your Ads Here!