Пример #1
0
  @SuppressWarnings({"PMD.AvoidCatchingThrowable", "PMD.AvoidInstanceofChecksInCatchClause"})
  private void handle(
      ServletRequestHandler pReqHandler, HttpServletRequest pReq, HttpServletResponse pResp)
      throws IOException {
    JSONAware json = null;
    try {
      // Check access policy
      requestHandler.checkAccess(
          pReq.getRemoteHost(), pReq.getRemoteAddr(), getOriginOrReferer(pReq));

      // Remember the agent URL upon the first request. Needed for discovery
      updateAgentDetailsIfNeeded(pReq);

      // Dispatch for the proper HTTP request method
      json = handleSecurely(pReqHandler, pReq, pResp);
    } catch (Throwable exp) {
      json =
          requestHandler.handleThrowable(
              exp instanceof RuntimeMBeanException
                  ? ((RuntimeMBeanException) exp).getTargetException()
                  : exp);
    } finally {
      setCorsHeader(pReq, pResp);

      String callback = pReq.getParameter(ConfigKey.CALLBACK.getKeyValue());
      String answer =
          json != null
              ? json.toJSONString()
              : requestHandler
                  .handleThrowable(new Exception("Internal error while handling an exception"))
                  .toJSONString();
      if (callback != null) {
        // Send a JSONP response
        sendResponse(pResp, "text/javascript", callback + "(" + answer + ");");
      } else {
        sendResponse(pResp, getMimeType(pReq), answer);
      }
    }
  }
Пример #2
0
  @SuppressWarnings("PMD.AvoidCatchingThrowable")
  private void handle(
      ServletRequestHandler pReqHandler, HttpServletRequest pReq, HttpServletResponse pResp)
      throws IOException {
    JSONAware json = null;
    int code = 200;
    try {
      // Check access policy
      requestHandler.checkClientIPAccess(pReq.getRemoteHost(), pReq.getRemoteAddr());

      // Dispatch for the proper HTTP request method
      json = pReqHandler.handleRequest(pReq, pResp);
      code = requestHandler.extractResultCode(json);
      if (backendManager.isDebug()) {
        backendManager.info("Response: " + json);
      }
    } catch (Throwable exp) {
      JSONObject error = requestHandler.handleThrowable(exp);
      code = (Integer) error.get("status");
      json = error;
    } finally {
      sendResponse(pResp, code, json.toJSONString());
    }
  }