Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## javax.servlet
Interface ServletContext

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:

- Class loader -- each application gets its own beans and servlets.
- ServletContext attributes
- Servlets and servlet mappings (e.g. *.jsp could map to different servlets in different applications.)
- File root
- Mime mapping
- Real-path mapping (aliases)

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.

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD