Esempio n. 1
0
  private void setupTraceLog(HttpContext httpContext, String queue, AccessLog accessLog)
      throws IOException {
    String clientIp = httpContext.getClientIp();
    // DBへのアクセスログ採取有無
    if (!isLogging(clientIp, "accessDb." + queue)) {
      return;
    }
    // DBに記録する
    accessLog.insert();
    // リクエストStreamのpeek処理
    if (isLogging(clientIp, "accessTrace.request." + queue)) {
      PeekStream requestPeeker = accessLog.setupPeekRequest();
      httpContext.peekRequest(requestPeeker);
      context.enque(requestPeeker, Config.QUEUE_PEEK);

      // 既に受け取っているヘッダ部分をPeekStreamに流し込む
      HttpParser requestParser = httpContext.getRequestParser();
      OutputStream os = requestPeeker.getPeekOutputStream();
      requestParser.writeSeriarizeHeader(os);
    }
    // レスポンスStreamのpeek処理
    if (isLogging(clientIp, "accessTrace.response." + queue)) {
      PeekStream responsePeeker = accessLog.setupPeekResponse();
      httpContext.peekResponse(responsePeeker);
      context.enque(responsePeeker, Config.QUEUE_PEEK);
    }
  }
Esempio n. 2
0
  // URIと設定から呼び出し先QUEUEを決める。
  private MappingEntry mappingQueue(HttpContext httpContext) {
    String uri = httpContext.getRequestUri();
    if (MappingEntry.controllerEntry.matches(uri)) { // controllerへのリクエストか?
      httpContext.setAttribute(HttpContext.ATTRIBUTE_MAPPING_ENTRY, MappingEntry.controllerEntry);
      return MappingEntry.controllerEntry;
    }
    String clientIp = httpContext.getClientIp();

    // リクエストがReplay対象か?
    if (config.isReplay(clientIp, uri)) {
      return MappingEntry.replayEntry;
    }
    if (httpContext.isProxyRequest()) {
      // TODO 強制的にWebサーバとして動作するモード要,
      // requestLineがhttp://から始まってもクライアントが間違って送ってきたと判断する
      return MappingEntry.proxyEntry;
    }
    MappingEntry mappingEntry = config.mapping(uri);
    if (mappingEntry == null) {
      return null;
    }

    // マッピング先がReplay対象か?
    if (config.isReplay(clientIp, mappingEntry.getDestination())) {
      return MappingEntry.replayEntry;
    }
    httpContext.setAttribute(HttpContext.ATTRIBUTE_MAPPING_ENTRY, mappingEntry);
    return mappingEntry;
  }