| |
| |
Foreword | |
| |
| |
Acknowledgments | |
| |
| |
About the Author | |
| |
| |
Preface | |
| |
| |
| |
Application Architecture | |
| |
| |
What Is Application Architecture? | |
| |
| |
Architects and Architecture | |
| |
| |
Application Architecture and Engineering | |
| |
| |
WebSphere and IBM | |
| |
| |
IBM WebSphere Application Server | |
| |
| |
A Word about Specifications | |
| |
| |
How Close to the Specification Should I Stay with My Architecture? | |
| |
| |
WebSphere Extensions to Consider | |
| |
| |
One Size Does Not Fit All | |
| |
| |
Building Blocks of Application Architecture | |
| |
| |
Detail in Layering | |
| |
| |
A Complete Example | |
| |
| |
Layers Versus Tiers | |
| |
| |
Deployment Patterns for a Layered Architecture | |
| |
| |
Layers Versus Modules | |
| |
| |
A View Perspective on Architecture | |
| |
| |
Conclusion | |
| |
| |
References | |
| |
| |
| |
Setting a Standard | |
| |
| |
Organizational Standards and Conventions | |
| |
| |
Putting the "Engineering" in Software Engineering | |
| |
| |
Standards Documentation | |
| |
| |
Naming Standards and Conventions | |
| |
| |
Packages | |
| |
| |
Classes and Interfaces | |
| |
| |
Functions and Methods | |
| |
| |
Variables and Constants | |
| |
| |
Java Server Pages | |
| |
| |
Internal Documentation | |
| |
| |
Class Header Information | |
| |
| |
Class Methods | |
| |
| |
Getters and Setters | |
| |
| |
Inline Comments | |
| |
| |
Logging and Tracing | |
| |
| |
System.out | |
| |
| |
Using the Logger | |
| |
| |
Logging Levels | |
| |
| |
Method-Level Timers | |
| |
| |
Working with Logging and Tracing | |
| |
| |
Too Much Logging? | |
| |
| |
Why Not Use Aspects? | |
| |
| |
Exception and Error Handling | |
| |
| |
Project and Packaging File Structure | |
| |
| |
Using External Libraries | |
| |
| |
Unit Testing Requirements | |
| |
| |
What Is a Unit? | |
| |
| |
The Trouble with Web Testing | |
| |
| |
Agile Approaches | |
| |
| |
Code Completion and Review Process Requirements | |
| |
| |
Code Reviews | |
| |
| |
You Don't Have to Know Java for a Code Review | |
| |
| |
Communicating the Vision the Wiki Way | |
| |
| |
Conclusion | |
| |
| |
Reference | |
| |
| |
| |
Persistence Matters | |
| |
| |
Types of Persistence Frameworks | |
| |
| |
Object/Relational Mapping | |
| |
| |
SQL-Based Frameworks | |
| |
| |
Why Not Roll Your Own Framework? | |
| |
| |
WebSphere Data Source Resource Reference | |
| |
| |
iBATIS Framework | |
| |
| |
Implementing the Customer Class and Customer SQL Mapping | |
| |
| |
Configurating iBATIS | |
| |
| |
Adding the Spring DAO Framework | |
| |
| |
Running a Test | |
| |
| |
Transactional Thinking | |
| |
| |
EJB 3 and the Java Persistence API | |
| |
| |
Understanding the Approach | |
| |
| |
Entities with POJOs and Annotations | |
| |
| |
Entity Managers | |
| |
| |
Testing the Application | |
| |
| |
Remote Clients | |
| |
| |
Conclusion | |
| |
| |
| |
Designing the Middle Tiers | |
| |
| |
Business Logic | |
| |
| |
Another HelloWorld Example | |
| |
| |
Making the Business Layer Accessible | |
| |
| |
Getting Ready for Unit Testing | |
| |
| |
WebSphere Shared Libraries | |
| |
| |
Making the Library Visible | |
| |
| |
Mapping Shared Libraries to Class Loaders | |
| |
| |
Testing the Business Layer | |
| |
| |
Controlling Shared Libraries | |
| |
| |
Implementation Options | |
| |
| |
Business Process Layers | |
| |
| |
Conclusion | |
| |
| |
References | |
| |
| |
| |
Presentation Frameworks | |
| |
| |
Choosing a Presentation Framework | |
| |
| |
JavaServer Faces | |
| |
| |
Lifecycle Phase Listener | |
| |
| |
About the Sample Application | |
| |
| |
Masking and Conversion Errors | |
| |
| |
JSF as a Standard | |
| |
| |
IBM's JWL | |
| |
| |
Conclusion | |
| |
| |
References | |
| |
| |
| |
Investing in a Portal | |
| |
| |
Incorporating a Portal into Your Architecture | |
| |
| |
Virtual Portal Technology | |
| |
| |
Business-to-Employee (B2E) Portals | |
| |
| |
Business Process or Forms-Based Portal | |
| |
| |
Portals Versus the Web App | |