The Web component of WAF makes the persistent data and domain logic of your application available to others over protocols such as HTTP. It integrates the Java Servlet API and the kernel and persistence components of WAF.
For more information about building and deploying your own applications, see Chapter 8 WAF Application Development Tutorial.
WAF supports deploying multiple instances of an application type. A typical WAF installation may have three forum instances, each with its own data and configuration at distinct locations on the site. A WAF Application is the base on which developers build such applications in the WAF framework.
In the following, we distinguish between an application, here meaning the concrete application you wish to develop, and Application, the WAF base class used to define such new applications.
Applications have a number of specific properties.
Applications are persistent — An Application has persistent properties describing its location, name, etc. It is also a container of persistent data, often user-entered data, that a concrete application uses to do its work. A forum, for instance, will contain database-stored message threads and posts.
Applications work with the dispatcher — Applications are designed to work together with the WAF dispatcher to convert user-friendly URL paths into an application servlet and an application instance containing its specific data. The dispatcher uses the location and parent properties of an Application to look it up using the request URL.
Applications have a Servlet — Once the dispatcher has routed a request to an Application, the Application responds using a Java Servlet.
Applications are associated with Stylesheets — The WAF presentation layer uses XSLT stylesheets to implement the look-and-feel of its applications. The Application abstraction carries with it a stylesheet property that the presentation layer uses to fetch the appropriate stylesheet.
Applications extend Resources — Applications leverage a feature of the WAF kernel API, Resources. Resources model containment, resource-partitioned user and configuration data, and a data-backed type system. See Section 3.4 Kernel Resources. For example, Application uses the containment behavior of Resource to implement its security.