org.jboss.web
Class WebServer

java.lang.Object
  extended by org.jboss.web.WebServer
All Implemented Interfaces:
Runnable

public class WebServer
extends Object
implements Runnable

A mini webserver that should be embedded in another application. It can server any file that is available from classloaders that are registered with it, including class-files. Its primary purpose is to simplify dynamic class-loading in RMI. Create an instance of it, register a classloader with your classes, start it, and you'll be able to let RMI-clients dynamically download classes from it. It is configured by calling any methods programmatically prior to startup.

Version:
$Revision: 1.26.4.8 $
Author:
Marc Fleury, Scott Stark.
See Also:
WebClassLoader

Constructor Summary
WebServer()
           
 
Method Summary
 URL addClassLoader(ClassLoader cl)
          Add a class loader to the web server map and return the URL that should be used as the annotated codebase for classes that are to be available via RMI dynamic classloading.
 void addMimeType(String extension, String type)
          Augment the type suffix to mime type mappings
 int getBacklog()
          Get the server sockets listen queue depth
 String getBindAddress()
           
 String getBindHostname()
           
protected  byte[] getBytes(URL url)
          Read the local class/resource contents into a byte array.
protected  String getClassLoaderKey(ClassLoader cl)
          Create the string key used as the key into the loaderMap.
 boolean getDownloadResources()
           
 boolean getDownloadServerClasses()
           
protected  String getMimeType(String path)
          Lookup the mime type for the suffix of the path argument.
protected  String getPath(BufferedReader in)
           
 int getPort()
          Get the http listening port
 org.jboss.util.threadpool.BasicThreadPoolMBean getThreadPool()
           
protected  void listen()
           
 void removeClassLoader(ClassLoader cl)
          Remove a class loader previously added via addClassLoader
 void run()
          Listen threads entry point.
 void setBacklog(int backlog)
          Set the server sockets listen queue depth
 void setBindAddress(String host)
           
 void setDownloadResources(boolean flag)
           
 void setDownloadServerClasses(boolean flag)
           
 void setPort(int p)
          Set the http listening port
 void setThreadPool(org.jboss.util.threadpool.BasicThreadPoolMBean threadPool)
           
 void start()
          Start the web server on port and begin listening for requests.
 void stop()
          Close the web server listening socket
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

WebServer

public WebServer()
Method Detail

setPort

public void setPort(int p)
Set the http listening port


getPort

public int getPort()
Get the http listening port

Returns:
the http listening port

getBindAddress

public String getBindAddress()

getBindHostname

public String getBindHostname()

setBindAddress

public void setBindAddress(String host)

getBacklog

public int getBacklog()
Get the server sockets listen queue depth

Returns:
the listen queue depth

setBacklog

public void setBacklog(int backlog)
Set the server sockets listen queue depth


getDownloadServerClasses

public boolean getDownloadServerClasses()

setDownloadServerClasses

public void setDownloadServerClasses(boolean flag)

getDownloadResources

public boolean getDownloadResources()

setDownloadResources

public void setDownloadResources(boolean flag)

getThreadPool

public org.jboss.util.threadpool.BasicThreadPoolMBean getThreadPool()

setThreadPool

public void setThreadPool(org.jboss.util.threadpool.BasicThreadPoolMBean threadPool)

addMimeType

public void addMimeType(String extension,
                        String type)
Augment the type suffix to mime type mappings

Parameters:
extension - - the type extension without a period(class, txt)
type - - the mime type string

start

public void start()
           throws Exception
Start the web server on port and begin listening for requests.

Throws:
Exception

stop

public void stop()
Close the web server listening socket


addClassLoader

public URL addClassLoader(ClassLoader cl)
Add a class loader to the web server map and return the URL that should be used as the annotated codebase for classes that are to be available via RMI dynamic classloading. The codebase URL is formed by taking the java.rmi.server.codebase system property and adding a subpath unique for the class loader instance.

Parameters:
cl - - the ClassLoader instance to begin serving download requests for
Returns:
the annotated codebase to use if java.rmi.server.codebase is set, null otherwise.
See Also:
getClassLoaderKey(ClassLoader)

removeClassLoader

public void removeClassLoader(ClassLoader cl)
Remove a class loader previously added via addClassLoader

Parameters:
cl - - the ClassLoader previously added via addClassLoader

run

public void run()
Listen threads entry point. Here we accept a client connection and located requested classes/resources using the class loader specified in the http request.

Specified by:
run in interface Runnable

getClassLoaderKey

protected String getClassLoaderKey(ClassLoader cl)
Create the string key used as the key into the loaderMap.

Returns:
The class loader instance key.

listen

protected void listen()

getPath

protected String getPath(BufferedReader in)
                  throws IOException
Returns:
the path portion of the HTTP request header.
Throws:
IOException

getBytes

protected byte[] getBytes(URL url)
                   throws IOException
Read the local class/resource contents into a byte array.

Throws:
IOException

getMimeType

protected String getMimeType(String path)
Lookup the mime type for the suffix of the path argument.

Returns:
the mime-type string for path.


Copyright © 2002 JBoss Group, LLC. All Rights Reserved.