當前位置: 首頁>>代碼示例>>Java>>正文


Java Response.isError方法代碼示例

本文整理匯總了Java中org.apache.catalina.connector.Response.isError方法的典型用法代碼示例。如果您正苦於以下問題:Java Response.isError方法的具體用法?Java Response.isError怎麽用?Java Response.isError使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在org.apache.catalina.connector.Response的用法示例。


在下文中一共展示了Response.isError方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: invoke

import org.apache.catalina.connector.Response; //導入方法依賴的package包/類
/**
 * Invoke the next Valve in the sequence. When the invoke returns, check
 * the response state. If the status code is greater than or equal to 400
 * or an uncaught exception was thrown then the error handling will be
 * triggered.
 *
 * @param request The servlet request to be processed
 * @param response The servlet response to be created
 *
 * @exception IOException if an input/output error occurs
 * @exception ServletException if a servlet error occurs
 */
@Override
public void invoke(Request request, Response response) throws IOException, ServletException {

    // Perform the request
    getNext().invoke(request, response);

    if (response.isCommitted()) {
        if (response.setErrorReported()) {
            // Error wasn't previously reported but we can't write an error
            // page because the response has already been committed. Attempt
            // to flush any data that is still to be written to the client.
            try {
                response.flushBuffer();
            } catch (Throwable t) {
                ExceptionUtils.handleThrowable(t);
            }
            // Close immediately to signal to the client that something went
            // wrong
            response.getCoyoteResponse().action(ActionCode.CLOSE_NOW, null);
        }
        return;
    }

    Throwable throwable = (Throwable) request.getAttribute(RequestDispatcher.ERROR_EXCEPTION);

    // If an async request is in progress and is not going to end once this
    // container thread finishes, do not process any error page here.
    if (request.isAsync() && !request.isAsyncCompleting()) {
        return;
    }

    if (throwable != null && !response.isError()) {
        // Make sure that the necessary methods have been called on the
        // response. (It is possible a component may just have set the
        // Throwable. Tomcat won't do that but other components might.)
        // These are safe to call at this point as we know that the response
        // has not been committed.
        response.reset();
        response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
    }

    // One way or another, response.sendError() will have been called before
    // execution reaches this point and suspended the response. Need to
    // reverse that so this valve can write to the response.
    response.setSuspended(false);

    try {
        report(request, response, throwable);
    } catch (Throwable tt) {
        ExceptionUtils.handleThrowable(tt);
    }
}
 
開發者ID:liaokailin,項目名稱:tomcat7,代碼行數:65,代碼來源:ErrorReportValve.java

示例2: invoke

import org.apache.catalina.connector.Response; //導入方法依賴的package包/類
/**
 * Invoke the next Valve in the sequence. When the invoke returns, check the
 * response state. If the status code is greater than or equal to 400 or an
 * uncaught exception was thrown then the error handling will be triggered.
 *
 * @param request
 *            The servlet request to be processed
 * @param response
 *            The servlet response to be created
 *
 * @exception IOException
 *                if an input/output error occurs
 * @exception ServletException
 *                if a servlet error occurs
 */
@Override
public void invoke(Request request, Response response) throws IOException, ServletException {

	// Perform the request
	getNext().invoke(request, response);

	if (response.isCommitted()) {
		if (response.setErrorReported()) {
			// Error wasn't previously reported but we can't write an error
			// page because the response has already been committed. Attempt
			// to flush any data that is still to be written to the client.
			try {
				response.flushBuffer();
			} catch (Throwable t) {
				ExceptionUtils.handleThrowable(t);
			}
			// Close immediately to signal to the client that something went
			// wrong
			response.getCoyoteResponse().action(ActionCode.CLOSE_NOW, null);
		}
		return;
	}

	Throwable throwable = (Throwable) request.getAttribute(RequestDispatcher.ERROR_EXCEPTION);

	// If an async request is in progress and is not going to end once this
	// container thread finishes, do not process any error page here.
	if (request.isAsync() && !request.isAsyncCompleting()) {
		return;
	}

	if (throwable != null && !response.isError()) {
		// Make sure that the necessary methods have been called on the
		// response. (It is possible a component may just have set the
		// Throwable. Tomcat won't do that but other components might.)
		// These are safe to call at this point as we know that the response
		// has not been committed.
		response.reset();
		response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
	}

	// One way or another, response.sendError() will have been called before
	// execution reaches this point and suspended the response. Need to
	// reverse that so this valve can write to the response.
	response.setSuspended(false);

	try {
		report(request, response, throwable);
	} catch (Throwable tt) {
		ExceptionUtils.handleThrowable(tt);
	}
}
 
開發者ID:how2j,項目名稱:lazycat,代碼行數:68,代碼來源:ErrorReportValve.java

示例3: invoke

import org.apache.catalina.connector.Response; //導入方法依賴的package包/類
@Override
public void invoke (Request request, Response response) throws IOException,
   ServletException
{
   // valve disabled or previous valve sent an error, return
   if (!isEnable() || response.isError())
   {
      getNext().invoke(request, response);
      return;
   }

   final AccessInformation ai = new AccessInformation();
   ai.setConnectionStatus(new PendingConnectionStatus());

   // To be sure not to retrieve the same date trough concurrency calls.
   synchronized (this)
   {
      ai.setStartTimestamp(System.nanoTime());
      ai.setStartDate (new Date ());
   }
   try
   {
      this.doLog(request, response, ai);
   }
   finally
   {
      Element cached_element = new Element(UUID.randomUUID(), ai);
      getCache().put(cached_element);

      try
      {
         // Log of the pending request command.
         if (isUseLogger()) LOGGER.info ("Access " + ai);

         getNext().invoke(request, response);
      }
      catch (Throwable e)
      {
         response.addHeader("cause-message",
            e.getClass().getSimpleName() + " : " + e.getMessage());
         //ai.setConnectionStatus(new FailureConnectionStatus(e));
         response.setStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR);
         //throw e;
      }
      finally
      {
         ai.setReponseSize(response.getContentLength());
         ai.setWrittenResponseSize(response.getContentWritten());

         if (response.getStatus()>=400)
         {
            String message = RequestUtil.filter(response.getMessage());
            if (message==null)
            {
               // The cause-message has been inserted into the reponse header
               // at error handler time. It no message is retrieved in the
               // standard response, the cause-message is used.
               message = response.getHeader("cause-message");
            }
            Throwable throwable = null;
            if (message != null) throwable = new Throwable(message);
            else throwable = (Throwable) request.getAttribute(
               RequestDispatcher.ERROR_EXCEPTION);
            if (throwable==null) throwable = new Throwable();

            ai.setConnectionStatus(new FailureConnectionStatus(throwable));
         }
         else
            ai.setConnectionStatus(new SuccessConnectionStatus());

         ai.setEndTimestamp(System.nanoTime());
         if ((getPattern()==null) || ai.getRequest().matches(getPattern()))
         {
            cached_element.updateUpdateStatistics();
            if (isUseLogger()) LOGGER.info ("Access " + ai);
         }
      }
   }
}
 
開發者ID:SentinelDataHub,項目名稱:dhus-core,代碼行數:80,代碼來源:AccessValve.java


注:本文中的org.apache.catalina.connector.Response.isError方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。