UnavailableException.java
上传用户:tanyanyong
上传日期:2013-06-23
资源大小:1355k
文件大小:9k
源码类别:

电子政务应用

开发平台:

MultiPlatform

  1. /*
  2.  * The Apache Software License, Version 1.1
  3.  *
  4.  * Copyright (c) 1999 The Apache Software Foundation.  All rights 
  5.  * reserved.
  6.  *
  7.  * Redistribution and use in source and binary forms, with or without
  8.  * modification, are permitted provided that the following conditions
  9.  * are met:
  10.  *
  11.  * 1. Redistributions of source code must retain the above copyright
  12.  *    notice, this list of conditions and the following disclaimer. 
  13.  *
  14.  * 2. Redistributions in binary form must reproduce the above copyright
  15.  *    notice, this list of conditions and the following disclaimer in
  16.  *    the documentation and/or other materials provided with the
  17.  *    distribution.
  18.  *
  19.  * 3. The end-user documentation included with the redistribution, if
  20.  *    any, must include the following acknowlegement:  
  21.  *       "This product includes software developed by the 
  22.  *        Apache Software Foundation (http://www.apache.org/)."
  23.  *    Alternately, this acknowlegement may appear in the software itself,
  24.  *    if and wherever such third-party acknowlegements normally appear.
  25.  *
  26.  * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
  27.  *    Foundation" must not be used to endorse or promote products derived
  28.  *    from this software without prior written permission. For written 
  29.  *    permission, please contact apache@apache.org.
  30.  *
  31.  * 5. Products derived from this software may not be called "Apache"
  32.  *    nor may "Apache" appear in their names without prior written
  33.  *    permission of the Apache Group.
  34.  *
  35.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  36.  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  37.  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  38.  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  39.  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  40.  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  41.  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  42.  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  43.  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  44.  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  45.  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  46.  * SUCH DAMAGE.
  47.  * ====================================================================
  48.  *
  49.  * This software consists of voluntary contributions made by many
  50.  * individuals on behalf of the Apache Software Foundation.  For more
  51.  * information on the Apache Software Foundation, please see
  52.  * <http://www.apache.org/>.
  53.  *
  54.  * ====================================================================
  55.  *
  56.  * This source code implements specifications defined by the Java
  57.  * Community Process. In order to remain compliant with the specification
  58.  * DO NOT add / change / or delete method signatures!
  59.  */ 
  60. package javax.servlet;
  61. /**
  62.  * Defines an exception that a servlet throws to indicate
  63.  * that it is permanently or temporarily unavailable. 
  64.  *
  65.  * <p>When a servlet is permanently unavailable, something is wrong
  66.  * with the servlet, and it cannot handle
  67.  * requests until some action is taken. For example, the servlet
  68.  * might be configured incorrectly, or its state may be corrupted.
  69.  * A servlet should log both the error and the corrective action
  70.  * that is needed.
  71.  *
  72.  * <p>A servlet is temporarily unavailable if it cannot handle
  73.  * requests momentarily due to some system-wide problem. For example,
  74.  * a third-tier server might not be accessible, or there may be 
  75.  * insufficient memory or disk storage to handle requests. A system
  76.  * administrator may need to take corrective action.
  77.  *
  78.  * <p>Servlet containers can safely treat both types of unavailable
  79.  * exceptions in the same way. However, treating temporary unavailability
  80.  * effectively makes the servlet container more robust. Specifically,
  81.  * the servlet container might block requests to the servlet for a period
  82.  * of time suggested by the servlet, rather than rejecting them until
  83.  * the servlet container restarts.
  84.  *
  85.  *
  86.  * @author  Various
  87.  * @version  $Version$
  88.  *
  89.  */
  90. public class UnavailableException
  91. extends ServletException {
  92.     private Servlet     servlet;           // what's unavailable
  93.     private boolean     permanent;         // needs admin action?
  94.     private int         seconds;           // unavailability estimate
  95.     /**
  96.      * 
  97.      * @deprecated As of Java Servlet API 2.2, use {@link
  98.      *  #UnavailableException(String)} instead.
  99.      *
  100.      * @param servlet  the <code>Servlet</code> instance that is
  101.      *                  unavailable
  102.      *
  103.      * @param msg  a <code>String</code> specifying the
  104.      *                  descriptive message
  105.      *
  106.      */
  107.     public UnavailableException(Servlet servlet, String msg) {
  108. super(msg);
  109. this.servlet = servlet;
  110. permanent = true;
  111.     }
  112.  
  113.     /**
  114.      * @deprecated As of Java Servlet API 2.2, use {@link
  115.      * #UnavailableException(String, int)} instead.
  116.      *
  117.      * @param seconds an integer specifying the number of seconds
  118.      *  the servlet expects to be unavailable; if
  119.      * zero or negative, indicates that the servlet
  120.      * can't make an estimate
  121.      *
  122.      * @param servlet the <code>Servlet</code> that is unavailable
  123.      * 
  124.      * @param msg a <code>String</code> specifying the descriptive 
  125.      * message, which can be written to a log file or 
  126.      * displayed for the user.
  127.      *
  128.      */
  129.     
  130.     public UnavailableException(int seconds, Servlet servlet, String msg) {
  131. super(msg);
  132. this.servlet = servlet;
  133. if (seconds <= 0)
  134.     this.seconds = -1;
  135. else
  136.     this.seconds = seconds;
  137. permanent = false;
  138.     }
  139.     /**
  140.      * 
  141.      * Constructs a new exception with a descriptive
  142.      * message indicating that the servlet is permanently
  143.      * unavailable.
  144.      *
  145.      * @param msg  a <code>String</code> specifying the
  146.      *                  descriptive message
  147.      *
  148.      */
  149.     public UnavailableException(String msg) {
  150. super(msg);
  151. permanent = true;
  152.     }
  153.     /**
  154.      * Constructs a new exception with a descriptive message
  155.      * indicating that the servlet is temporarily unavailable
  156.      * and giving an estimate of how long it will be unavailable.
  157.      * 
  158.      * <p>In some cases, the servlet cannot make an estimate. For
  159.      * example, the servlet might know that a server it needs is
  160.      * not running, but not be able to report how long it will take
  161.      * to be restored to functionality. This can be indicated with
  162.      * a negative or zero value for the <code>seconds</code> argument.
  163.      *
  164.      * @param msg a <code>String</code> specifying the
  165.      *                  descriptive message, which can be written
  166.      *                  to a log file or displayed for the user.
  167.      *
  168.      * @param seconds an integer specifying the number of seconds
  169.      *  the servlet expects to be unavailable; if
  170.      * zero or negative, indicates that the servlet
  171.      * can't make an estimate
  172.      *
  173.      */
  174.     
  175.     public UnavailableException(String msg, int seconds) {
  176. super(msg);
  177. if (seconds <= 0)
  178.     this.seconds = -1;
  179. else
  180.     this.seconds = seconds;
  181. permanent = false;
  182.     }
  183.     /**
  184.      *
  185.      * Returns a <code>boolean</code> indicating
  186.      * whether the servlet is permanently unavailable.
  187.      * If so, something is wrong with the servlet, and the
  188.      * system administrator must take some corrective action.
  189.      *
  190.      * @return <code>true</code> if the servlet is
  191.      * permanently unavailable; <code>false</code>
  192.      * if the servlet is available or temporarily
  193.      * unavailable
  194.      *
  195.      */
  196.      
  197.     public boolean isPermanent() {
  198. return permanent;
  199.     }
  200.   
  201.     /**
  202.      * @deprecated As of Java Servlet API 2.2, with no replacement.
  203.      *
  204.      * Returns the servlet that is reporting its unavailability.
  205.      * 
  206.      * @return the <code>Servlet</code> object that is 
  207.      * throwing the <code>UnavailableException</code>
  208.      *
  209.      */
  210.      
  211.     public Servlet getServlet() {
  212. return servlet;
  213.     }
  214.     /**
  215.      * Returns the number of seconds the servlet expects to 
  216.      * be temporarily unavailable.  
  217.      *
  218.      * <p>If this method returns a negative number, the servlet
  219.      * is permanently unavailable or cannot provide an estimate of
  220.      * how long it will be unavailable. No effort is
  221.      * made to correct for the time elapsed since the exception was
  222.      * first reported.
  223.      *
  224.      * @return an integer specifying the number of seconds
  225.      * the servlet will be temporarily unavailable,
  226.      * or a negative number if the servlet is permanently
  227.      * unavailable or cannot make an estimate
  228.      *
  229.      */
  230.      
  231.     public int getUnavailableSeconds() {
  232. return permanent ? -1 : seconds;
  233.     }
  234. }