org.apache.xmlrpc.webserver
public class WebServer extends Object implements Runnable
The {@link WebServer} is a minimal HTTP server, that might be used as an embedded web server.
Use of the {@link WebServer} has grown very popular amongst users of Apache XML-RPC. Why this is the case, can hardly be explained, because the {@link WebServer} is at best a workaround, compared to full blown servlet engines like Tomcat or Jetty. For example, under heavy load it will almost definitely be slower than a real servlet engine, because it does neither support proper keepalive (multiple requests per physical connection) nor chunked mode (in other words, it cannot stream requests).
If you still insist in using the {@link WebServer}, it is recommended to use its subclass, the {@link ServletWebServer} instead, which offers a minimal subset of the servlet API. In other words, you keep yourself the option to migrate to a real servlet engine later.
Use of the {@link WebServer} goes roughly like this: First of all, create a property file (for example "MyHandlers.properties") and add it to your jar file. The property keys are handler names and the property values are the handler classes. Once that is done, create an instance of WebServer:
final int port = 8088; final String propertyFile = "MyHandler.properties"; PropertyHandlerMapping mapping = new PropertyHandlerMapping(); ClassLoader cl = Thread.currentThread().getContextClassLoader(); mapping.load(cl, propertyFile); WebServer webServer = new WebServer(port); XmlRpcServerConfigImpl config = new XmlRpcServerConfigImpl(); XmlRpcServer server = webServer.getXmlRpcServer(); server.setConfig(config); server.setHandlerMapping(mapping); webServer.start();
Field Summary | |
---|---|
protected List | accept |
protected List | deny |
protected XmlRpcStreamServer | server |
protected ServerSocket | serverSocket |
Constructor Summary | |
---|---|
WebServer(int pPort) Creates a web server at the specified port number. | |
WebServer(int pPort, InetAddress pAddr) Creates a web server at the specified port number and IP address. |
Method Summary | |
---|---|
void | acceptClient(String pAddress) Add an IP address to the list of accepted clients. |
protected boolean | allowConnection(Socket s)
Checks incoming connections to see if they should be allowed.
|
protected ServerSocket | createServerSocket(int pPort, int backlog, InetAddress addr)
Factory method to manufacture the server socket. |
void | denyClient(String pAddress)
Add an IP address to the list of denied clients. |
int | getPort() Returns the port, on which the web server is running.
|
XmlRpcStreamServer | getXmlRpcServer() Returns the {@link org.apache.xmlrpc.server.XmlRpcServer}. |
void | log(Throwable pError) Logs an error. |
void | log(String pMessage) Logs a message. |
protected ThreadPool.Task | newTask(WebServer pServer, XmlRpcStreamServer pXmlRpcServer, Socket pSocket) |
protected ThreadPool | newThreadPool() |
protected XmlRpcStreamServer | newXmlRpcStreamServer() |
void | run()
Listens for client requests until stopped. |
void | setParanoid(boolean pParanoid)
Switch client filtering on/off. |
void | shutdown()
Stop listening on the server port. |
void | start()
Spawns a new thread which binds this server to the port it's
configured to accept connections on.
|
Parameters: pPort Port number; 0 for a random port, choosen by the operating system.
Parameters: pPort Port number; 0 for a random port, choosen by the operating system. pAddr Local IP address; null for all available IP addresses.
Parameters: pAddress The IP address being enabled.
Throws: IllegalArgumentException Parsing the address failed.
Parameters: s The socket to inspect.
Returns: Whether the connection should be allowed.
SSLServerSocket
).
Parameters: pPort Port number; 0 for a random port, choosen by the operating
system. backlog addr If null
, binds to
INADDR_ANY
, meaning that all network interfaces on
a multi-homed host will be listening.
Throws: IOException Error creating listener socket.
Parameters: pAddress The IP address being disabled.
Throws: IllegalArgumentException Parsing the address failed.
Returns: Servers port number
Returns: The server object.
Parameters: pError The error being logged.
Parameters: pMessage The being logged.
Throws: RuntimeException Generally caused by either an
UnknownHostException
or BindException
with the vanilla web server.
Parameters: pParanoid True to enable filtering, false otherwise.
See Also: run
Throws: IOException Binding the server socket failed.
See Also: run