2016-10-28 6 views
0

Angenommen, ich habe eine triviale Boot-Clj-Task, die '[pandeiro.boot-http :refer [serve]] verwendet. Wenn ich Änderungen vornehme und die Aufgabe neu starten muss, würde es sich beschweren, dass der Port bereits benutzt wird. Gibt es eine Möglichkeit, den Jetty-Server zu beenden, ohne einen Neustart durchführen zu müssen?Wie kann ich Anlegestegserver stoppen, ohne erneut zu starten?

Antwort

0

Wenn Sie nur dieser viele Menschen dieses Muster verwenden:

(defonce running-server (atom nil)) 
(defn stop-server [] (@running-server)) 
(defn go [] 
    (reset! running-server 
      (org.httpkit.server/run-server 
      ... your stuff here ...)) 

Wenn dies ein längerfristiges Projekt mit so etwas wie die Komponenten-Framework löst in einem viel eleganten Weg, um dieses Problem bei dem Starten und ermöglicht viele abhängigen Komponenten (daher der Name). Dies ist ein good place to get started und lesenswert, bevor Sie Ihr nächstes Projekt starten.

0

pandeiro.boot-http unterstützt das erneute Laden Ihres Handlers, so dass Sie die serve Aufgabe nicht neu starten müssen. Sie müssen es so konfigurieren, mit :reload set to true:

Auf Befehlszeile:

boot serve -H myapp.server/app -R wait 

Oder in Ihrem Boot-Skript:

(boot (serve :handler 'myapp.server/app :reload true) (wait)) 

Für regelmäßige statische Dateien serve gibt immer die aktuelle Version von der Platte so Sie müssen nicht neu geladen werden.

Wenn Sie wirklich die Aufgabe neu starten müssen, denke ich, dass Sie möglicherweise von issue in pandeiro.boot-http betroffen sind und möglicherweise Kontakt mit seinem Betreuer aufnehmen müssen.

Verwandte Themen