Table of Contents
Any business user-friendly application logic can be divided as:

Tiers demonstrates this logic division on the web-based business application example. A high-level view of the Tiers architecture:

Is responsible for GUI showing, user input control, converting GUI events to calls to the business components.
Is responsible for business rules support, concurrent access management, persistent model constraints check.
Is responsible for persistent object model support: load from / save to data storage.
Every layer will be described in the details below.
Web layer main components:

Component responsibilities:
HTML page: user view of system data/images/controls/navigation, JavaScript/CSS inclusion.
JavaScript: simple user input control that do not require server-side execution.
CSS: HTML page layout properties.
Maverick framework:
does Web layer initialization: maverick.xml parsing, XSL stylesheets precompiling/caching, Controller singletons creation.
populates Form objects from HttpRequest.
dispatches request processing to corresponding Controller.
converts created Model to DOM form, applies XSL to DOM, returns result response to Browser.
maverick.xml: URL to (Controller,XSL stylesheets) mapping configuration, Maverick framework customization parameters.
XSL stylesheet: Model DOM form to HTML page transformation rules.
Form: HttpSession-stored JavaBean object populated from HttpRequest, contains GUI web form state.
Controller: Form creation, converting GUI events to calls to the business components, Model building, XSL stylesheet selection.
Model: JavaBean object presentation of GUI data, includes Form.
Used interfaces/protocols:
HTTP(S): Servlet container <-> Browser
DOM,JAXP: Java <-> XSL stylesheet
RMI: Controller <-> Business component
JNDI: Business component lookup
Business layer main components:

Component responsibilities:
Business logic bean: business methods implementation, concurrent access control, persistent model constraints check.
Data access object (DAO): Java API to persistent model, object queries construction.
Tester: functional testing of Business logic bean via remote interfaces.
Used interfaces/protocols:
Hibernate Query Language, Hibernate Session API: DAO <-> Persistent layer
RMI: Tester <-> Business logic bean
JNDI: Business logic bean lookup, Hibernate service lookup
Persistent layer main components:

Component responsibilities:
Initializer: initial persistent data creation via Persistent objects, Hibernate Session API.
Hibernate service: object/relational persistence and query service, persistent objects storing to /loading from relational database.
Connection pool service: database connections cache.
Relational database server: persistent data storage, simple entities relationship constraints support.
Used interfaces/protocols:
Hibernate Query Language, Hibernate Session API: Initializer <-> database
SQL queries over TCP/IP: Hibernate <-> database
JNDI: connection pool service lookup