Beispiel #1
0
    public void run() {
      long keepAliveTimeout = ((TcpConnector) connector).getKeepAliveTimeout();

      try {
        do {
          conn.setKeepAlive(false);

          // Only add a monitor if the timeout has been set
          if (keepAliveTimeout > 0) {
            ((HttpConnector) connector)
                .getKeepAliveMonitor()
                .addExpirable(keepAliveTimeout, TimeUnit.MILLISECONDS, this);
          }

          HttpRequest request = conn.readRequest();
          if (request == null) {
            break;
          }

          // Ensure that we drop any monitors, we'll add again for the next request
          ((HttpConnector) connector).getKeepAliveMonitor().removeExpirable(this);

          conn.writeResponse(processRequest(request));

          if (request.getBody() != null) {
            request.getBody().close();
          }
        } while (conn.isKeepAlive());
      } catch (Exception e) {
        handleException(e);
      } finally {
        logger.debug("Closing HTTP connection.");

        if (conn.isOpen()) {
          conn.close();
          conn = null;

          // Ensure that we drop any monitors
          ((HttpConnector) connector).getKeepAliveMonitor().removeExpirable(this);
        }
      }
    }
Beispiel #2
0
 public void release() {
   conn.close();
   conn = null;
 }
Beispiel #3
0
 public void expired() {
   if (conn.isOpen()) {
     conn.close();
   }
 }