Ein minimalistischer HTTP-Server
ulrich
2021-03-27 6d3836e41493f89c5b8700cca34111319e9fa41a
Kommentare ergaenzt
3 files modified
52 ■■■■■ changed files
src/de/uhilger/minsrv/App.java 36 ●●●●● patch | view | raw | blame | history
src/de/uhilger/minsrv/Server.java 4 ●●●● patch | view | raw | blame | history
src/de/uhilger/minsrv/handler/StopServerHandler.java 12 ●●●●● patch | view | raw | blame | history
src/de/uhilger/minsrv/App.java
@@ -23,7 +23,26 @@
import java.util.logging.Logger;
/**
 * Die Hauptklasse des mini-server
 * <p>Die Hauptklasse des mini-server</p>
 *
 * <p>Folgende Kommandozeilenparameter werden verarbeitet </p>
 *
 * <p>ctx - Kontext des Servers <br>
 * www-data - lokales Datenverzeichnis <br>
 * port - Port</p>>
 *
 * <p>Beispiel: <code>java -jar mini-server.jar ctx="srv" www-data="/home/fred/www"
 * port=9090</code></p>
 *
 * <p>Startet den Server auf http://localhost:9090/srv und liefert Inhalte aus
 * dem Verzeichnis <code>/home/fred/www</code> aus.
 *
 * Ein Aufruf von http://localhost:9090/srv/pfad/zum/inhalt/index.html liefert
 * also die Datei 'index.html' aus dem Ordner /home/fred/www/pfad/zum/inhalt
 * aus.</p>
 *
 * <p>Mit http://localhost:9090/srv/server/stop werden Server und App
 * beendet.</p>
 *
 * @author Ulrich Hilger
 * @version 0.1, 25.03.2021
@@ -39,20 +58,7 @@
  private static HashMap initParams;
  /**
   * Start-Methode dieser Anwendung
   *
   * Folgende Kommandozeilenparameter werden verarbeitet ctx - Kontext des
   * Servers www-data - lokales Datenverzeichnis port - Port
   *
   * Beispiel: java -jar mini-server.jar ctx="srv" www-data="/home/fred/www"
   * port=9090
   *
   * Startet den Server auf http://localhost:9090/srv und liefert Inhalte aus
   * dem Verzeichnis /home/fred/www aus.
   *
   * Ein Aufruf von http://localhost:9090/srv/pfad/zum/inhalt/index.html liefert
   * also die Datei 'index.html' aus dem Ordner /home/fred/www/pfad/zum/inhalt
   * aus.
   * <p>Start-Methode dieser Anwendung</p>
   *
   * @param args Kommandozeilenparameter
   */
src/de/uhilger/minsrv/Server.java
@@ -38,7 +38,7 @@
  private static final Logger logger = Logger.getLogger(Server.class.getName());
  
  public static final String STR_SLASH = "/";
  public static final String CMD_SERVER_STOP = "/server/stop";
  
  private int port;
  
@@ -86,7 +86,7 @@
    HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);
    server.createContext(ctx + STR_SLASH, new FileHandler(App.getInitParameter(App.IP_WWW_DATA)));
    server.createContext(ctx + "/server/stop", new StopServerHandler());
    server.createContext(ctx + CMD_SERVER_STOP, new StopServerHandler());
    server.setExecutor(Executors.newFixedThreadPool(20));
    server.start();
  }
src/de/uhilger/minsrv/handler/StopServerHandler.java
@@ -33,6 +33,14 @@
 */
public class StopServerHandler implements HttpHandler {
  /**
   * Den Server geordnet herunterfahren und
   * dann die Anwendung beenden.
   *
   * @param e das Objekt mit Methoden zur Untersuchung der Anfrage sowie zum
   * Anfertigen und Senden der Antwort
   * @throws IOException falls etwas schief geht entsteht dieser Fehler
   */
  @Override
  public void handle(HttpExchange e) throws IOException {
    Logger.getLogger(StopServerHandler.class.getName()).info(e.getRequestURI().toString());
@@ -48,6 +56,10 @@
    timer.schedule(new AppStopper(), 2000);
  }
  /**
   * Die Klasse AppStopper erm&ouml;glicht das asnychrone bzw.
   * zeitgesteuerte Stoppen der Anwendung.
   */
  class AppStopper extends TimerTask {
    @Override