Domanda

Sto scrivendo un'applicazione web usando l'anello e clojure. Sto usando l'adattatore pontile per il server di sviluppo e emacs / SLIME per IDE. Mentre wrap-reload aiuta, blocchi run-molo mia sessione melma e mi piacerebbe essere in grado di avviare / fermare a volontà senza dover eseguirlo in una sessione di terminale separato. Idealmente, vorrei definire un agente di server e funzioni di start-server e stop-server che potrebbero avviare / arrestare il server all'interno l'agente. È possibile?

È stato utile?

Soluzione

Io di solito hanno una linea nel mio anello app che appare come il seguente:

(defonce server (run-jetty #'my-app {:port 8080 :join? false}))

Questo impedisce la chiusura del REPL. Esso permette anche a me di ricompilare questo file, senza preoccuparsi che il mio server otterrà ridefinito. Essa consente inoltre di interagire al REPL in questo modo:

user=> (.stop server)

e

user=> (.start server)

Altri suggerimenti

La documentazione Jetty ha alcune informazioni sul grazioso arresto di Jetty. Questo è probabilmente non abbastanza informazioni ma può iniziare.

Non ho iniziato a giocare con compojure ancora, ma nel complesso preferisco lavorare con Tomcat. E 'più completo; tra l'altro, v'è un'API ben documentata per metterla in funzione e chiuderlo, ascolta per il comando di arresto su una porta dedicata; ci sono compiti ant per fare questo, e potevano naturalmente essere chiamato da un'applicazione Java pure. Io proprio non so che tipo di magia Compojure fa con il collegamento del REPL a un'istanza in esecuzione del contenitore Web, e se / come ricarico classe automatica accade ... speriamo che qualcun altro sarà in grado di fornire maggiori informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top