sunlabs.brazil.server
public interface Handler
The Handler method is called before this
Handler
processes the first HTTP request, to allow it to
prepare itself, such as by allocating any resources needed for the
lifetime of the server
.
The respond method is called to handle an HTTP request. This method, and all methods it calls must be thread-safe since they may handle HTTP requests from multiple sockets concurrently. However, each concurrent request gets its own individual Request object.
Any instance variables should be initialized in the
Handler, and only referenced, but not set in the
respond method. If any state needs to be retained,
it should be done either by associating it with the Request
object, or using the
session manager
.
Class statics should be avoided, as it is possible, and even common to
run multiple unrelated Brazil servers in the same JVM. As above, the
session manager
should be used instead.
Version: 2.3
Method Summary | |
---|---|
boolean | init(Server server, String prefix)
Initializes the handler.
|
boolean | respond(Request request)
Responds to an HTTP request.
|
Parameters: server
The HTTP server that created this Handler
.
Typical Handler
s will use props
to obtain run-time configuration information.
prefix
The handlers name.
The string this Handler
may prepend to all
of the keys that it uses to extract configuration information
from props. This is set (by the Server
and ChainHandler) to help avoid configuration parameter
namespace collisions.
Returns: true
if this Handler
initialized
successfully, false
otherwise. If
false
is returned, this Handler
should not be used.
Parameters: request
The Request
object that represents the HTTP
request.
Returns: true
if the request was handled. A request was
handled if a response was supplied to the client, typically
by calling Request.sendResponse()
or
Request.sendError
.
Throws: IOException
if there was an I/O error while sending the response to
the client. Typically, in that case, the
The Server
will (try to) send an error message to the client and then
close the client's connection.
IOException
should not be used to silently
ignore problems such as being unable to access some
server-side resource (for example getting a
FileNotFoundException
due to not being able
to open a file). In that case, the Handler
's
duty is to turn that IOException
into a
HTTP response indicating, in this case, that a file could
not be found.