This discussion will assume the seven layer architecture shown below. Most are conventional. One layer that may not be used in practice is the third -- the UI Model layer. It (approximately) replicates the interfaces of the Session EJB layer, but provides a convenient intermediate point for flows coming out of the Web Container on the way to the EJB Container. This is especially helpful for novice programmers who may be struggling with the complexities of a Struts design for the first time. Providing them with a local Java model that can be stubbed out for testing the UI and, thereby, not requiring an understanding of and linking to a Session EJB greatly simplifies early development efforts. Of course, some designs may perform actual processing in this layer, such as merging data or evaluating results of a request to the backend.