public class Server
extends java.lang.Thread
Handler
to service http requests. If no handler is
supplied, then the FileHandler
is used.
A ChainHandler
is provided to allow multiple handlers in one server.
Limitations:
Modifier and Type | Field and Description |
---|---|
int |
acceptCount
Count of accepted connections so far.
|
int |
bufsize
Default buffer size for copies to and from client sockets.
|
int |
errorCount
Count of errors that occurred so far.
|
Handler |
handler |
java.lang.String |
hostName
The hostname that this Server should use to identify itself in
an HTTP Redirect.
|
boolean |
initFailure
If set, the server will terminate with an initialization failure
just before creating the listen socket.
|
java.net.ServerSocket |
listen
The listening socket.
|
static int |
LOG_DIAGNOSTIC |
static int |
LOG_ERROR |
static int |
LOG_INFORMATIONAL |
static int |
LOG_LOG |
static int |
LOG_WARNING |
int |
logLevel
The diagnostic level.
|
int |
maxPost
Maximum amout of POST data allowed per request (in bytes)
(default = 2Meg).
|
int |
maxRequests
Maximum number of consecutive requests allowed on a single
kept-alive socket.
|
int |
maxThreads
The max number of threads allowed for the entire VM
(default is 250).
|
java.lang.String |
name
The string to return as the value for the "Server:" line in the HTTP
response header.
|
java.lang.String |
prefix
The handler is passed a prefix to identify which items in the
properties object are relevent.
|
java.util.Properties |
props
Hashtable containing arbitrary information that may be of interest to
a Handler.
|
java.lang.String |
protocol
The protocol used to access this resource.
|
int |
requestCount
Count of HTTP requests received so far.
|
java.net.InetAddress[] |
restrict
If non-null, restrict connections to just the specified ip addresses.
|
int |
timeout
Time in milliseconds before this Server closes an idle socket or
in-progress request.
|
Constructor and Description |
---|
Server()
Set up the server.
|
Server(java.net.ServerSocket listen,
java.lang.String handlerName,
java.util.Properties props)
Create a server using the provided listener socket.
|
Modifier and Type | Method and Description |
---|---|
void |
close()
Stop the server, and kill all pending requests
|
boolean |
init() |
void |
log(int level,
java.lang.Object obj,
java.lang.String message)
Logs information about the socket to
System.out . |
boolean |
restart(java.lang.String newHandler)
Restart the server with a new handler.
|
void |
run()
Loops, accepting socket connections and replying to HTTP requests.
|
boolean |
setup(java.net.ServerSocket listen,
java.lang.String handlerName,
java.util.Properties props) |
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
public java.net.ServerSocket listen
public Handler handler
public java.util.Properties props
Handler
interface, as props
in the
Handler.init(Server, String)
method, and as the default properties of
Request.props
in the Handler.respond(Request)
method.public java.lang.String hostName
null
, the hostname is derived
by calling InetAddress.getHostAddress
.
InetAddress.getHostName
would generally be the wrong
thing to return because it returns only the base machine name
xxx
and not the machine name as it needs to appear
to the rest of the network, such as xxx.yyy.com
.
The default value is null
.
public java.lang.String protocol
http
, but
can be changed for ssl
to https
public java.net.InetAddress[] restrict
The default value is null
.
public java.lang.String name
null
, then no "Server:" line is
returned.public java.lang.String prefix
public int timeout
The default value is 30000
.
public int maxRequests
The default value is 25
.
public int maxThreads
public int maxPost
public int bufsize
public int acceptCount
public int requestCount
public int errorCount
public int logLevel
public boolean initFailure
public static final int LOG_ERROR
public static final int LOG_WARNING
public static final int LOG_LOG
public static final int LOG_INFORMATIONAL
public static final int LOG_DIAGNOSTIC
public Server(java.net.ServerSocket listen, java.lang.String handlerName, java.util.Properties props)
This server will call the Handler.respond
method
of the specified handler. The specified handler should either
respond to the request or perform further dispatches to other
handlers.
listen
- The socket this server should listen to.
For ordinary sockets, this is simply:
new ServerSocket(port)
, where port
is the network port to listen on. Alternate implementations
of ServerSocket
, such as ssl versions
may be used instead.handlerName
- The name of the handler used to process http requests.
It must implement the Handler
interface.props
- Arbitrary information made available to the handler.
May be null
.FileHandler
,
ChainHandler
public Server()
public boolean setup(java.net.ServerSocket listen, java.lang.String handlerName, java.util.Properties props)
public boolean init()
public boolean restart(java.lang.String newHandler)
newHandler
- Name of the handler to restart the server withpublic void run()
Many things in the server are not initialized until this point,
because the user may have set some related configuration options
between the time this server was allocated and the time it was
started. For instance, the main Handler
is not
initialized until now, because its Handler.init
method
may have wanted to examine server member variables such as
hostName
or bufsize
.
run
in interface java.lang.Runnable
run
in class java.lang.Thread
public void close()
public void log(int level, java.lang.Object obj, java.lang.String message)
System.out
.level
- Controls the verbosity (0=least 5=most)obj
- The object that the message relates to.message
- The message to be logged.