Print this page Share

J2EE AntiPatterns

ISBN: 978-0-471-14615-5
624 pages
August 2003
J2EE AntiPatterns (0471146153) cover image


"The flip-side of Patterns, AntiPatterns provide developers with formal descriptions of common development gaffes that can derail a project along with practical guidelines on how to avoid them. In this book, the authors present dozens of Java AntiPatterns that tackle many of Java's biggest trouble spots for programming with EJB, JSP, Servlets, and more. Each AntiPattern is documented with real-world examples, code, and refactored (or escape-route) solutions, and the book uses UML (where appropriate) to diagram improved solutions. All code examples from the book are available to the reader on the book's companion Web site."
See More

Table of Contents



Author Bios.


Chapter 1: Distribution and Scaling.

AntiPattern: Localizing Data.

AntiPattern: Misunderstanding Data Requirements.

AntiPattern: Miscalculating Bandwidth Requirements.

AntiPattern: Overworked Hubs.

AntiPattern: The Man with the Axe.


Plan Ahead.

Choose the Right Data Architecture.

Partition Data and Work.

Plan for Scaling (Enterprise-Scale Object Orientation).

Plan Realistic Network Requirements.

Use Specialized Networks.

Be Paranoid.

Throw Hardware at the Problem.

Chapter 2: Persistence.

AntiPattern: Dredge.

AntiPattern: Crush.

AntiPattern: DataVision.

AntiPattern: Stifle.


Light Query.


Component View.


Chapter 3: Service-Based Architecture.

AntiPattern: Multiservice.

AntiPattern: Tiny Service.

AntiPattern: Stovepipe Service.

AntiPattern: Client Completes Service.


Interface Partitioning.

Interface Consolidation.

Technical Services Layer.

Cross-Tier Refactoring.

Chapter 4: JSP Use and Misuse.

AntiPattern: Ignoring Reality.

AntiPattern: Too Much Code.

AntiPattern: Embedded Navigational Information.

AntiPattern: Copy and Paste JSP.

AntiPattern: Too Much Data in Session.

AntiPattern: Ad Lib TagLibs.



Introduce Traffic Cop.

Introduce Delegate Controller.

Introduce Template.

Remove Session Access.

Remove Template Text.

Introduce Error Page.

Chapter 5: Servlets.

AntiPattern: Including Common Functionality in Every Servlet.

AntiPattern: Template Text in Servlet.

AntiPattern: Using Strings for Content Generation.

AntiPattern: Not Pooling Connections.

AntiPattern: Accessing Entities Directly.


Introduce Filters.

Use JDom.

Use JSPs.

Chapter 6: Entity Beans.

AntiPattern: Fragile Links.

AntiPattern: DTO Explosion.

AntiPattern: Surface Tension.

AntiPattern: Coarse Behavior.

AntiPattern: Liability.

AntiPattern: Mirage.


Local Motion.



Flat View.

Strong Bond.

Best of Both Worlds.


Chapter 7: Session EJBs.

AntiPattern: Sessions A-Plenty.

AntiPattern: Bloated Session.

AntiPattern: Thin Session.

AntiPattern: Large Transaction.

AntiPattern: Transparent Façade.

AntiPattern: Data Cache.


Session Façade.

Split Large Transaction.

Chapter 8: Message-Driven Beans.

AntiPattern: Misunderstanding JMS.

AntiPattern: Overloading Destinations.

AntiPattern: Overimplementing Reliability.


Architect the Solution.

Plan Your Network Data Model.

Leverage All Forms of EJBs.

Chapter 9: Web Services.

AntiPattern: Web Services Will Fix Our Problems.

AntiPattern: When in Doubt, Make It a Web Service.

AntiPattern: God Object Web Service.

AntiPattern: Fine-Grained/Chatty Web Service.

AntiPattern: Maybe It’s Not RPC.

AntiPattern: Single-Schema Dream.

AntiPattern: SOAPY Business Logic.


RPC to Document Style.

Schema Adaptor.

Web Service Business Delegate.

Chapter 10: J2EE Services.

AntiPattern: Hard-Coded Location Identifiers.

AntiPattern: Web = HTML.

AntiPattern: Requiring Local Native Code.

AntiPattern: Overworking JNI.

AntiPattern: Choosing the Wrong Level of Detail.

AntiPattern: Not Leveraging EJB Containers.


Parameterize Your Solution.

Match the Client to the Customer.

Control the JNI Boundary.

Fully Leverage J2EE Technologies.

Appendix A AntiPatterns Catalog.

Distribution and Scaling AntiPatterns.

Persistence AntiPatterns.

Service-Based Architecture AntiPatterns.

JSP Use and Misuse AntiPatterns.

Servlet AntiPatterns.

Entity Bean AntiPatterns.

Session EJB AntiPatterns.

Message-Driven Bean AntiPatterns.

Web Services AntiPatterns.

J2EE Service AntiPatterns.

Appendix B: Refactorings Catalog.

Distribution and Scaling Refactorings.

Persistence Refactorings.

Service-Based Architecture Refactorings.

JSP Use and Misuse Refactorings.

Servlet Refactorings.

Entity Bean Refactorings.

Session EJBs Refactorings.

Message-Driven Bean Refactorings.

Web Service Refactorings.

J2EE Service Refactorings.

Appendix C: What’s on the Web Site.

System Requirements.

What’s on the Web Site.



See More

Author Information

BILL DUDNEY is a Java architect who?s been building J2EE applications for five years and distributed computing solutions for 14. He is co-author of Jakarta® Pitfalls (Wiley).

STEPHEN ASBURY is co-author of Developing Java™ Enterprise Applications and author of Enterprise Linux® at Work (both from Wiley), as well as four other books on development technology.

JOSEPH K. KROZAK is Vice President of Technology Development for Krozak Information Technologies, Inc., a supplier of advanced software solutions to Fortune 500 and mid-market companies.

KEVIN WITTKOPF has been a software architect and developer for more than seventeen years. He focuses on enterprise integration, Web services, messaging, and service-based architecture.

See More


Companion Site
Visit the Companion Site.
See More

Related Titles

Back to Top