Ein minimalistischer HTTP-Server
ulrich
2021-03-27 ee6a3e9057bff6e30e6deff43100bcf2bf9bfba5
src/de/uhilger/minsrv/handler/StopServerHandler.java
@@ -14,8 +14,7 @@
  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 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();
    }
  }
}