Sun and Oracle Community Voices How to Buy Log In United States [Change] English

»  Spotlight Articles
»  Projects
»  Publications
»  People
»  Awards
»  Events
»  Downloads
»  Internships
»  Contrarian Minds
»  About Sun Labs
Brazil project: Class GenericProxyHandler

sunlabs.brazil.handler Class GenericProxyHandler

java.lang.Object
  |
  +--sunlabs.brazil.handler.GenericProxyHandler
All Implemented Interfaces:
Handler
Direct Known Subclasses:
MultiProxyHandler, ProxyPropertiesHandler

public class GenericProxyHandler
extends Object
implements Handler

Handler for implementing a virtual web site. This causes another web site to "appear" inside our document root. This classes is intended to be sub-classed, so some of the methods in this implementation don't do too much. All of the appropriate links in HTML documents on the virtual site are rewritten, so they appear to be local references. This can be used on a firewall in conjunction with AclSwitchHandler to provide authenticated acces to selected web sites.

Properties:

prefix
URL prefix must match
host
name of host site to proxy to.
port
Host port to proxy to (defaults to 80).
proxyHost
Which proxy host to use (if any) to contact "host".
proxyPort
The proxy's port (defaults to 80)


Field Summary
protected  String host            
static String HOST           Handler configuration property host.
static String NL            
protected  int port            
static String PORT           Handler configuration property port.
protected  String prefix            
static String PREFIX           Handler configuration property prefix.
static String PROXY_HOST           Handler configuration property proxyHost.
static String PROXY_PORT           Handler configuration property proxyPort.
protected  String proxyHost            
protected  int proxyPort            
protected  String requestPrefix            
protected  String urlPrefix            
 
Constructor Summary
GenericProxyHandler()            
 
Method Summary
 void addMap(MapPage mapper)           for subclassing
 boolean init(Server server, String prefix)           Do one-time setup.
 boolean isMine(Request request)           See if this is one of my requests.
 byte[] modifyContent(Request request, byte[] content)           Rewrite the links in an html file so they resolve correctly in proxy mode.
 boolean respond(Request request)           If this is one of "our" url's, fetch the document from the destination server, and return it as if it was local.
protected  boolean shouldFilter(MimeHeaders headers)           See if the content needs to be filtered.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

prefix

protected String prefix

host

protected String host

port

protected int port

proxyHost

protected String proxyHost

proxyPort

protected int proxyPort

urlPrefix

protected String urlPrefix

requestPrefix

protected String requestPrefix

PREFIX

public static final String PREFIX
Handler configuration property prefix. Only URL's that begin with this string are considered by this handler. The default is (/).

HOST

public static final String HOST
Handler configuration property host. The actual host site to appear on our site (required)

PORT

public static final String PORT
Handler configuration property port. The actual port on the host site (defaults to 80).

PROXY_HOST

public static final String PROXY_HOST
Handler configuration property proxyHost. The name of a proxy to use (if any) to get to the host.

PROXY_PORT

public static final String PROXY_PORT
Handler configuration property proxyPort. The proxy port to use to get to the host. defaults to 80.

NL

public static final String NL
Constructor Detail

GenericProxyHandler

public GenericProxyHandler()
Method Detail

init

public boolean init(Server server,
                    String prefix)
Do one-time setup. get and process the handler properties. we can contact the server identified by the host parameter.
Specified by:
init in interface Handler
Tags copied from interface: Handler
Parameters:
server - The HTTP server that created this Handler. Typical Handlers will use Server.props to obtain run-time configuration information.
prefix - A prefix that this Handler may prepend to all of the keys that it uses to extract configuration information from Server.props. This is set (by the Server and ChainHandler) to help avoid configuration parameter namespace collisions.

For example, if a Handler uses the property "account", and the specified prefix is "bank.", then the Handler should actually examine the property "bank.account" in Server.props.

Returns:
true if this Handler initialized successfully, false otherwise. If false is returned, this Handler should not be used.

respond

public boolean respond(Request request)
                throws IOException
If this is one of "our" url's, fetch the document from the destination server, and return it as if it was local.
Specified by:
respond in interface Handler
Tags copied from interface: Handler
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 Server will (try to) send an error message to the client and then close the client's connection.

The 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.


shouldFilter

protected boolean shouldFilter(MimeHeaders headers)
See if the content needs to be filtered. Return "true" if "modifyContent" should be called
Parameters:
headers - Vector of mime headers for data to proxy

isMine

public boolean isMine(Request request)
See if this is one of my requests. This method can be overridden to do more sophisticated mappings.
Parameters:
request - The standard request object

modifyContent

public byte[] modifyContent(Request request,
                            byte[] content)
Rewrite the links in an html file so they resolve correctly in proxy mode.
Parameters:
request - The original request to this "proxy"
headers - The vector of mime headers for the proxy request
Returns:
true if the headers and content should be sent to the client, false otherwise Modifies "headers" as a side effect

addMap

public void addMap(MapPage mapper)
for subclassing

Version 2.2, Generated 07/25/00
Copyright (c) 2000, Sun Microsystems.