J2EE Architectures


J2EE provides many architectural choices. J2EE also offers many component types (such as servlets, EJBs, JSP pages, and servlet filters), and J2EE app servers provide many additional services. While this array of options enables us to design the best solution for each problem, it also poses dangers. J2EE developers can be overwhelmed by the choices on offer, or can be tempted to use infrastructure inappropriate to the problem in hand, simply because it's available. In this tutorial I aim to help professional J2EE developers and architects make the appropriate choices to deliver high-quality solutions on time and within budget. I'll focus on those features of J2EE that have proven most useful for solving the commonest problems in enterprise software development. In this chapter, we discuss the high-level choices in developing a J2EE architecture, and how to decide which parts of J2EE to use to solve real problems. We'll look at:

This tutorial reflects my experience and discussions with other enterprise architects. I will attempt to justify the claims made in this chapter in the remainder of the tutorial. However, there are, necessarily, many matters of opinion.


In particular, the message I'll try to get across will be that we should apply J2EE to realize OO design, not let J2EE technologies dictate object design.


Familiarity with J2EE components has been assumed. We'll take a close look at container services in the following chapters, but please refer to an introductory tutorial on J2EE if the concepts discussed are unfamiliar.