Ein minimalistischer HTTP-Server
ulrich
2021-03-27 ee6a3e9057bff6e30e6deff43100bcf2bf9bfba5
src/de/uhilger/minsrv/handler/StopServerHandler.java
@@ -1,21 +1,20 @@
/*
    mc2 - Mediacenter neu
    Copyright (C) 2021  Ulrich Hilger
  mini-server - Ein minimalistischer HTTP-Server
  Copyright (C) 2021  Ulrich Hilger
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as
    published by the Free Software Foundation, either version 3 of the
    License, or (at your option) any later version.
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU Affero General Public License as
  published by the Free Software Foundation, either version 3 of the
  License, or (at your option) any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU Affero General Public License for more details.
    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
*/
  You should have received a copy of the GNU Affero General Public License
  along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
package de.uhilger.minsrv.handler;
import com.sun.net.httpserver.HttpExchange;
@@ -23,27 +22,39 @@
import de.uhilger.minsrv.App;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Timer;
import java.util.TimerTask;
import java.util.logging.Logger;
/**
 * Ein HTTP-Handler zum Stoppen der Anwendung
 *
 * @author ulrich
 * @author Ulrich Hilger
 */
public class StopServerHandler implements HttpHandler {
  @Override
  public void handle(HttpExchange exchange) throws IOException {
    Logger.getLogger(StopServerHandler.class.getName()).info(exchange.getRequestURI().toString());
  public void handle(HttpExchange e) throws IOException {
    Logger.getLogger(StopServerHandler.class.getName()).info(e.getRequestURI().toString());
    String response = "Server stopped";
    exchange.sendResponseHeaders(200, response.length());
    OutputStream os = exchange.getResponseBody();
    e.sendResponseHeaders(200, response.length());
    OutputStream os = e.getResponseBody();
    os.write(response.getBytes());
    os.flush();
    os.close();
    Logger.getLogger(StopServerHandler.class.getName()).info("stopping app.");
    App.stop();
    //exchange.getHttpContext().getServer().stop(5);
    Logger.getLogger(StopServerHandler.class.getName()).info("stopping server.");
    e.getHttpContext().getServer().stop(1);
    Timer timer = new Timer();
    timer.schedule(new AppStopper(), 2000);
  }
  class AppStopper extends TimerTask {
    @Override
    public void run() {
      Logger.getLogger(StopServerHandler.class.getName()).info("Mini-Server beendet.");
      App.stop();
    }
  }
}