The following table identifies a few of the classes that could be useful when configured into a Brazil server.
Using existing components
Dealing with files
FileHandler Delivers static files from the file system to clients, based on the requested URL.
ResourceHandler Delivers static files contained in Java resources (jar files) to clients, based on the requested URL.
NotFoundHandler Delivers a static file, either from the filesystem or a Java resource without regard to the specific URL requested, presumably because the requested resource is not available.
TemplateHandler Reads HTML/XML templates from the filesystem, based on the requested URL, and processes them through a sequence of template classes.
ReplaceTemplate Replaces the content currently associated with a URL request with a fixed page from the filesystem. This is useful when the needed portions of the prior content have been extracted to the Request Properties.
DirectoryTemplate Computes a list of files and directories in the current directory (based on the requested URL), and makes the lists available for substitutions in a template.
Manipulating Remote Content
MultiProxyHandler Implements a "website mount" capability. All content under a supplied URL prefix is fetched from a remote site, and made to appear as if the content was on the local system.
Fetches content from a remote site asynchronously, and makes it available for use by any URL request.
IncludeTemplate Fetches content from a remote site synchronously for inclusion into the current content. There are two different versions. One (in the template package) uses the internal http protocol stack, which does connection caching. It works for all versions of Java (1.1 or newer) but only supports http. The other one (in the Sunlabs package) uses the stack built-in to Java (as of jdk 1.4), so it supports https as well as other protocols, but it doesn't play with the built-in connection caching.
Authentication and access control
BasicAuthHandler Manipulates Browser based basic authentication headers, for use as access control tokens, either over https connections, or where the passwords aren't very secret.
DigestAuthHandler Manipulates Browser based digest authentication headers, for use as access control tokens. This is preferred to basic authentication, but isn't supported by all browsers.
RolesHandler Assigns sets of privileges (stored in files) to clients based on their access control tokens.
AclSwitchHandler Allows or denies access to specified resources based on user privileges, or access control tokens.
RestrictClientHandler Allows or denies client access to resources based on client ip addresses or domains.
Session Management
CookieSessionHandler Provides a Session Identifier based on browser cookies.
SimpleSessionHandler Provides (or modifies) a Session Identifier based on arbitrary combinations of http envelope properties, such as "user agent" or "client ip address".
BasicAuthHandler Provides a Session Identifier based on Basic Authentication tokens.
SslHandler Provides a Session Identifier based on Client certificates.
SessionFilter Provides a Session Identifier, using browser cookies where available, or URL rewriting otherwise.
Request management and Adaptors
ChainHandler Dispatches URL requests to a sequence of handlers.
FilterHandler Arranges for a URL request, including the content associated with it, to be rewritten by a sequence of filters.
TemplateHandler Processes the contents of a file as an HTML/XML document and makes "call backs" to template classes to rewrite portions of the document in a tag specific way.
TemplateFilter Processes the content associated with a URL request as an HTML/XML document and makes "call backs" to template classes to rewrite portions of the document in a tag specific way.
BrazilServlet Allows a Brazil application to be deployed in a J2EE compliant Web container, by turning an entire Brazil server into a Servlet.
ChainSawHandler Generates web standard log files.
LogHandler Generates customizable server logs.
PropertiesCacheManager Provides a SessionManager implementation that arranges for (certain) session state to be saved to (and read from) ASCII files, allowing session information to persist across server restarts.
RestartHandler Allows the server to "restart" on the fly with a new configuration withoug losing any requests in progress.
XML/HTML template processing
SetTemplate Allows setting and retrieving ASCII session data, such as user preferences, or data generated by other Handlers or Templates to be substituted into HTML templates.
BSLTemplate Implements the Brazil Scripting Language, permitting scripting of presentation in an XML compliant syntax.
FormTemplate Automatically transfers session state to HTML forms.
Server-side Scripting Allows the inclusion and interpretation of scripts embedded inside of web pages. The following languages are currently supported:
  • TclServerTemplate
  • PythonServerTemplate
  • JavascriptServerTemplate
  • BeanshellServerTemplate
  • GroovyServerTemplate
Each scripting language is provided a reference to the current URL request and my either generate output directly into the content, or provide "meta" information that is integrated into the content using BSL.
Database Access
Allows LDAP or SQL to be embedded in HTML templates. Queries may be generated dynamically, and the results are made available to the rest of the HTML template for processing using BSL.
Calling external processes
CgiHandler Runs standard CGI/1.1 programs.
ExecFilter Passes the content associated with a URL request to a process for external rewriting.
ExecTemplate Runs a command inside of an HTML template, and returns a result that may be integrated into the HTML.

When application specific code needs to be added to the Brazil system, either as a Handler, Filter or Template, the following classes may be useful.
Building new components
SessionManager Provides a common set of services for managing persistent data in a deployment neutral way.
MatchString Provides the standard mechanism for determining the disposition of a request based on the URL.
HttpRequest Provides the client side of the HTTP protocol.
Useful classes for manipulating strings.
Utilities for interpreting, parsing, and rewriting web pages and their links.