javax.servlet
Interface ServletContext

All Known Subinterfaces:
CauchoApplication

public interface ServletContext

ServletContexts encapsulate applications. Applications are generalized virtual hosts; a URL prefix defines a distinct application. So /myapp and /yourapp could define different applications. As a degenerate case, each virtual host has its own ServletContext.

Each application is entirely distinct. Each has its own:

URIs are relative to the application root (e.g. /myapp) for most ServletContext methods. So you can define user workspaces with identical JSP files and servlets in different applications.

Including and forwarding

Forwarding and including files, the Servlet equivalent of SSI are handled by the RequestDispatcher methods.

Global initialization

There is no direct equivalent of a global.jsa. To initialize and cleanup shared classes on start and stop, use a load-on-startup servlet. The init() method will be called when the application starts and the destroy() method will be called when the application finishes.


   <servlet servlet-name='global'
            servlet-class='test.InitServlet'
            load-on-startup/>
 

Basic configuration

In the resin.conf, to define the /myapp application with a document root in /www/myweb, add the following to the resin.conf.

   <web-app id='/myapp' app-dir='/www/myweb'/>
 

Servlet and Bean locations (class loaders)

Each application has its own directories to load application servlets and beans. By default these are WEB-APP/classes and WEB-APP/lib. To add a servlet test.MyServlet, create the java file:
/www/myweb/WEB-APP/classes/test/MyServlet.java

Load balancing

When using load balancing with Apache, each JVM will have its own application object. The attributes are not shared. In contrast, sessions are always sent to the same JVM.

So the application object is best used as a cache rather than as a way for servlets to communicate.


Method Summary
 java.lang.Object getAttribute(java.lang.String name)
          Returns an attribute value.
 java.util.Enumeration getAttributeNames()
          Returns an enumeration of all the attribute names.
 ServletContext getContext(java.lang.String uri)
          Returns the ServletContext for the uri.
 java.lang.String getInitParameter(java.lang.String name)
          Returns the value of an initialization parameter from the configuration file.
 java.util.Enumeration getInitParameterNames()
          Returns an enumeration of all init parameter names.
 int getMajorVersion()
          Returns the major version of the servlet API.
 java.lang.String getMimeType(java.lang.String uri)
          Returns the mime type for the given uri.
 int getMinorVersion()
          Returns the minor version of the servlet API.
 RequestDispatcher getNamedDispatcher(java.lang.String servletName)
          Returns a request dispatcher based on a servlet name.
 java.lang.String getRealPath(java.lang.String uri)
          Returns the real file path for the given uri.
 RequestDispatcher getRequestDispatcher(java.lang.String uri)
          Returns a request dispatcher for later inclusion or forwarding.
 java.net.URL getResource(java.lang.String uri)
          Returns the resource for the given uri.
 java.io.InputStream getResourceAsStream(java.lang.String path)
          Returns the resource as a stream.
 java.lang.String getServerInfo()
          Returns a server-specific string identifying the servlet engine.
 Servlet getServlet(java.lang.String name)
          Deprecated.  
 java.util.Enumeration getServletNames()
          Deprecated.  
 java.util.Enumeration getServlets()
          Deprecated.  
 void log(java.lang.Exception exception, java.lang.String msg)
          Deprecated.  
 void log(java.lang.String msg)
          Logs a message.
 void log(java.lang.String message, java.lang.Throwable throwable)
          Logs a message and a stack trace.
 void removeAttribute(java.lang.String name)
          Removes an attribute.
 void setAttribute(java.lang.String name, java.lang.Object value)
          Sets an attribute value.
 

Method Detail

getServerInfo

public java.lang.String getServerInfo()
Returns a server-specific string identifying the servlet engine.

getMajorVersion

public int getMajorVersion()
Returns the major version of the servlet API.

getMinorVersion

public int getMinorVersion()
Returns the minor version of the servlet API.

getInitParameter

public java.lang.String getInitParameter(java.lang.String name)
Returns the value of an initialization parameter from the configuration file. The Resin configuration looks something like:

 <web-app id='/myapp' app-dir='/www/myapp'>
   <context-param name1='value1'/>
   <context-param name2='value2'/>
 </web-app>
 
Parameters:
name - init parameter name
Returns:
init parameter value

getInitParameterNames

public java.util.Enumeration getInitParameterNames()
Returns an enumeration of all init parameter names.

getContext

public ServletContext getContext(java.lang.String uri)
Returns the ServletContext for the uri. Note: the uri is not relative to the application.
Parameters:
uri - path relative to the root
Returns:
the ServletContext responsible for the given uri.

getRealPath

public java.lang.String getRealPath(java.lang.String uri)
Returns the real file path for the given uri. The file path will be in native path format (with native path separators.)

See ServletRequest to return the real path relative to the request uri.

Parameters:
uri - path relative to the application root to be translated.
Returns:
native file path for the uri.

getRequestDispatcher

public RequestDispatcher getRequestDispatcher(java.lang.String uri)
Returns a request dispatcher for later inclusion or forwarding. This is the servlet API equivalent to SSI includes. The uri is relative to the application root.

The following example includes the result of executing inc.jsp into the output stream. If the context path is /myapp, the equivalent uri is /myapp/inc.jsp

   RequestDispatcher disp;
   disp = getRequestDispatcher("/inc.jsp?a=b");
   disp.include(request, response);
 

See ServletRequest to return a request dispatcher relative to the request uri.

Parameters:
uri - path relative to the app root (including query string) for the included file.
Returns:
RequestDispatcher for later inclusion or forwarding.

getNamedDispatcher

public RequestDispatcher getNamedDispatcher(java.lang.String servletName)
Returns a request dispatcher based on a servlet name.
Parameters:
servletName - the servlet name to include or forward to.
Returns:
RequestDispatcher for later inclusion or forwarding.

getMimeType

public java.lang.String getMimeType(java.lang.String uri)
Returns the mime type for the given uri.
Parameters:
uri - path relative to the application root.

getAttribute

public java.lang.Object getAttribute(java.lang.String name)
Returns an attribute value.
Parameters:
name - of the attribute.
Returns:
stored value

getAttributeNames

public java.util.Enumeration getAttributeNames()
Returns an enumeration of all the attribute names.

setAttribute

public void setAttribute(java.lang.String name,
                         java.lang.Object value)
Sets an attribute value. Because servlets are multithreaded, setting ServletContext attributes will generally need synchronization.

A typical initialization of an application attribute will look like:

 ServletContext app = getServletContext();
 Object value;
 synchronized (app) {
   value = app.getAttribute("cache");
   if (value == null) {
     value = new Cache();
     app.setAttribute("cache", value);
   }
 }
 
Parameters:
name - of the attribute.
value - value to store

removeAttribute

public void removeAttribute(java.lang.String name)
Removes an attribute. Because servlets are multithreaded, removing ServletContext attributes will generally need synchronization.
Parameters:
name - of the attribute.

log

public void log(java.lang.String msg)
Logs a message.

log

public void log(java.lang.String message,
                java.lang.Throwable throwable)
Logs a message and a stack trace.

getResource

public java.net.URL getResource(java.lang.String uri)
                         throws java.net.MalformedURLException
Returns the resource for the given uri. In general, the RequestDispatcher routines are more useful.
Parameters:
uri - path relative to the application root.

getResourceAsStream

public java.io.InputStream getResourceAsStream(java.lang.String path)
Returns the resource as a stream. In general, the RequestDispatcher routines are more useful.
Parameters:
uri - path relative to the application root.
Returns:
InputStream to the resource.

getServlet

public Servlet getServlet(java.lang.String name)
                   throws ServletException
Deprecated.  


getServlets

public java.util.Enumeration getServlets()
Deprecated.  


getServletNames

public java.util.Enumeration getServletNames()
Deprecated.  


log

public void log(java.lang.Exception exception,
                java.lang.String msg)
Deprecated.