com.sun.grizzly.http.servlet
Class ServletAdapter

java.lang.Object
  extended by com.sun.grizzly.tcp.StaticResourcesAdapter
      extended by com.sun.grizzly.tcp.http11.GrizzlyAdapter
          extended by com.sun.grizzly.http.servlet.ServletAdapter
All Implemented Interfaces:
Adapter

public class ServletAdapter
extends GrizzlyAdapter

Adapter class that can initiate a FilterChain and execute its Filter and its Servlet Configuring a GrizzlyWebServer or SelectorThread to use this GrizzlyAdapter implementation add the ability of servicing Servlet as well as static resources. This class can be used to programatically configure a Servlet, Filters, listeners, init parameters, context-param, etc. a application usually defined using the web.xml. See addInitParameter(String, String) addContextParameter(String, String) setProperty(String, Object), addServletListener(String), etc. As an example:


      GrizzlyWebServer ws = new GrizzlyWebServer("/var/www");
        try{
            ServletAdapter sa = new ServletAdapter();
            sa.setRootFolder("/Path/To/Exploded/War/File");
            sa.setServlet(new MyServlet());

            // Set the Servlet's Name
            // Any ServletConfig.getXXX method can be configured using this call.
            // The same apply for ServletContext.getXXX.
            sa.setProperty("display-name","myServlet");
            sa.addListener("foo.bar.myHttpSessionListener");
            sa.addContextParameter("databaseURI","jdbc://");
            sa.addInitParameter("password","hello"); 
            sa.setServletPath("/MyServletPath");
            sa.setContextPath("/myApp");

            ws.addGrizzlyAdapter(sa);

            ws.start();
        } catch (IOException ex){
            // Something when wrong.
        }
 

Author:
Jeanfrancois Arcand

Field Summary
static String LOAD_ON_STARTUP
           
protected  HashMap<String,Object> properties
          Holder for our configured properties.
static int REQUEST_RESPONSE_NOTES
           
static int SERVLETCONFIG_NOTES
           
protected  Servlet servletInstance
           
 
Fields inherited from class com.sun.grizzly.tcp.http11.GrizzlyAdapter
ADAPTER_NOTES, ALLOW_BACKSLASH, chunkingDisabled
 
Fields inherited from class com.sun.grizzly.tcp.StaticResourcesAdapter
cache, commitErrorResponse, logger, resourcesContextPath, rootFolder, webDir
 
Constructor Summary
  ServletAdapter()
           
  ServletAdapter(Servlet servlet)
          Create a ServletAdapter which support the specific Servlet
  ServletAdapter(Servlet servlet, ServletContextImpl servletContext)
           
  ServletAdapter(String publicDirectory)
          Create a new instance which will look for static pages located under publicDirectory folder.
protected ServletAdapter(String publicDirectory, ServletContextImpl servletCtx, HashMap<String,String> parameters, ArrayList<String> listeners)
           
 
Method Summary
 void addContextParameter(String name, String value)
          Add a new servlet context parameter for this servlet.
 void addFilter(Filter filter, String filterName, Map initParameters)
          Add a Filter to the FilterChain
 void addInitParameter(String name, String value)
          Add a new servlet initialization parameter for this servlet.
 void addServletListener(String listenerName)
          Add Servlet listeners like ServletContextAttributeListener, ServletContextListener.
 void afterService(GrizzlyRequest request, GrizzlyResponse response)
          
protected  void configureClassLoader(String appliPath)
          Create a URLClassLoader which has the capability of loading classes jar under an exploded war application.
protected  void configureServletEnv()
          Configure the ServletContext and ServletConfig
 void customizeErrorPage(GrizzlyResponse response, String message, int errorCode)
          Customize the error page returned to the client.
 void destroy()
          Destroy this Servlet and its associated ServletContextListener
 String getContextPath()
          Returns the portion of the request URI that indicates the context of the request.
protected  ArrayList<String> getListeners()
           
protected  HashMap<String,String> getParameters()
           
 Object getProperty(String name)
          Return a configured property.
protected  ServletContextImpl getServletCtx()
           
 Servlet getServletInstance()
          Return the Servlet instance used by this Adapter
 String getServletPath()
          Returns the part of this request's URL that calls the servlet.
protected  void loadServlet()
          Load a Servlet instance.
 ServletAdapter newServletAdapter(Servlet servlet)
          Create a new ServletAdapter instance that will share the same init-parameters, ServletContext and Servlet's listener.
 void removeProperty(String name)
          Remove a configured property.
 void service(GrizzlyRequest request, GrizzlyResponse response)
          
 void setContextPath(String contextPath)
          Programmatically set the context path of the Servlet.
 void setProperty(String name, Object value)
          Set a configured property.
 void setServletInstance(Servlet servletInstance)
          Set the Servlet instance used by this Adapter
 void setServletPath(String servletPath)
          Programmatically set the servlet path of the Servlet.
 void start()
          
 
Methods inherited from class com.sun.grizzly.tcp.http11.GrizzlyAdapter
afterService, isAllowEncodedSlash, isHandleStaticResources, service, setAllowEncodedSlash, setDecodeUrl, setHandleStaticResources
 
Methods inherited from class com.sun.grizzly.tcp.StaticResourcesAdapter
customizedErrorPage, getResourcesContextPath, getRootFolder, initWebDir, isUseSendFile, service, setLogger, setResourcesContextPath, setRootFolder, setUseSendFile
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

REQUEST_RESPONSE_NOTES

public static final int REQUEST_RESPONSE_NOTES
See Also:
Constant Field Values

SERVLETCONFIG_NOTES

public static final int SERVLETCONFIG_NOTES
See Also:
Constant Field Values

LOAD_ON_STARTUP

public static final String LOAD_ON_STARTUP
See Also:
Constant Field Values

servletInstance

protected volatile Servlet servletInstance

properties

protected HashMap<String,Object> properties
Holder for our configured properties.

Constructor Detail

ServletAdapter

public ServletAdapter()

ServletAdapter

public ServletAdapter(Servlet servlet)
Create a ServletAdapter which support the specific Servlet


ServletAdapter

public ServletAdapter(String publicDirectory)
Create a new instance which will look for static pages located under publicDirectory folder.

Parameters:
publicDirectory - the folder where the static resource are located.

ServletAdapter

protected ServletAdapter(String publicDirectory,
                         ServletContextImpl servletCtx,
                         HashMap<String,String> parameters,
                         ArrayList<String> listeners)

ServletAdapter

public ServletAdapter(Servlet servlet,
                      ServletContextImpl servletContext)
Method Detail

start

public void start()

Overrides:
start in class GrizzlyAdapter

configureClassLoader

protected void configureClassLoader(String appliPath)
                             throws IOException
Create a URLClassLoader which has the capability of loading classes jar under an exploded war application.

Throws:
IOException

service

public void service(GrizzlyRequest request,
                    GrizzlyResponse response)

Specified by:
service in class GrizzlyAdapter

customizeErrorPage

public void customizeErrorPage(GrizzlyResponse response,
                               String message,
                               int errorCode)
Customize the error page returned to the client.

Parameters:
response - the GrizzlyResponse
message - the Http error message
erroCode - the error code.

loadServlet

protected void loadServlet()
                    throws ServletException
Load a Servlet instance.

Throws:
ServletException

configureServletEnv

protected void configureServletEnv()
                            throws ServletException
Configure the ServletContext and ServletConfig

Throws:
ServletException

afterService

public void afterService(GrizzlyRequest request,
                         GrizzlyResponse response)
                  throws Exception

Overrides:
afterService in class GrizzlyAdapter
Throws:
Exception

addInitParameter

public void addInitParameter(String name,
                             String value)
Add a new servlet initialization parameter for this servlet.

Parameters:
name - Name of this initialization parameter to add
value - Value of this initialization parameter to add

addContextParameter

public void addContextParameter(String name,
                                String value)
Add a new servlet context parameter for this servlet.

Parameters:
name - Name of this initialization parameter to add
value - Value of this initialization parameter to add

addFilter

public void addFilter(Filter filter,
                      String filterName,
                      Map initParameters)
Add a Filter to the FilterChain

Parameters:
filter - an instance of Filter
filterName - the Filter's name
initParameters - the Filter init parameters.

getServletInstance

public Servlet getServletInstance()
Return the Servlet instance used by this Adapter

Returns:

setServletInstance

public void setServletInstance(Servlet servletInstance)
Set the Servlet instance used by this Adapter

Parameters:
servletInstance - an instance of Servlet.

getServletPath

public String getServletPath()
Returns the part of this request's URL that calls the servlet. This path starts with a "/" character and includes either the servlet name or a path to the servlet, but does not include any extra path information or a query string. Same as the value of the CGI variable SCRIPT_NAME.

This method will return an empty string ("") if the servlet used to process this request was matched using the "/*" pattern.

Returns:
a String containing the name or path of the servlet being called, as specified in the request URL, decoded, or an empty string if the servlet used to process the request is matched using the "/*" pattern.

setServletPath

public void setServletPath(String servletPath)
Programmatically set the servlet path of the Servlet.

Parameters:
servletPath -

getContextPath

public String getContextPath()
Returns the portion of the request URI that indicates the context of the request. The context path always comes first in a request URI. The path starts with a "/" character but does not end with a "/" character. For servlets in the default (root) context, this method returns "". The container does not decode this string.

It is possible that a servlet container may match a context by more than one context path. In such cases this method will return the actual context path used by the request and it may differ from the path returned by the ServletContext.getContextPath() method. The context path returned by ServletContext.getContextPath() should be considered as the prime or preferred context path of the application.

Returns:
a String specifying the portion of the request URI that indicates the context of the request
See Also:
ServletContext.getContextPath()

setContextPath

public void setContextPath(String contextPath)
Programmatically set the context path of the Servlet.

Parameters:
contextPath -

addServletListener

public void addServletListener(String listenerName)
Add Servlet listeners like ServletContextAttributeListener, ServletContextListener.


getProperty

public Object getProperty(String name)
Return a configured property. Property apply to ServletContext and ServletConfig


setProperty

public void setProperty(String name,
                        Object value)
Set a configured property. Property apply to ServletContext and ServletConfig. Use this method to map what's you usually have in a web.xml like display-name, context-param, etc.

Parameters:
name - Name of the property to set
value - of the property.

removeProperty

public void removeProperty(String name)
Remove a configured property. Property apply to ServletContext and ServletConfig


destroy

public void destroy()
Destroy this Servlet and its associated ServletContextListener

Overrides:
destroy in class GrizzlyAdapter

newServletAdapter

public ServletAdapter newServletAdapter(Servlet servlet)
Create a new ServletAdapter instance that will share the same init-parameters, ServletContext and Servlet's listener.

Parameters:
servlet - - The Servlet associated with the ServletAdapter
Returns:
a new ServletAdapter

getServletCtx

protected ServletContextImpl getServletCtx()

getListeners

protected ArrayList<String> getListeners()

getParameters

protected HashMap<String,String> getParameters()


Copyright © 2009 SUN Microsystems. All Rights Reserved.