In this blog, 25.000 books will be uploaded, so far more than 1400 books are available. Books, will be added daily, please check this blog daily.
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
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment