Question

Je suis en train d'écrire une application Web en utilisant l'anneau et Clojure. J'utilise l'adaptateur de jetée pour le serveur de développement et emacs / BOUE pour IDE. Alors que wrap-reload ne l'aide, les blocs run-jetée ma séance de boue et je voudrais être en mesure de démarrer / arrêter à volonté sans avoir à l'exécuter dans une session de terminal séparé. Idéalement, je voudrais définir un agent serveur et les fonctions de démarrage serveur et arrêt-serveur qui démarrer / arrêter le serveur à l'intérieur de l'agent. Est-ce possible?

Était-ce utile?

La solution

J'ai habituellement une ligne dans mon application anneau qui se présente comme suit:

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

Ce verrouillage empêche le REPL. Il me permet aussi de recompiler ce fichier sans se soucier que mon serveur redéfinies. Il vous permet également d'interagir au REPL comme ceci:

user=> (.stop server)

et

user=> (.start server)

Autres conseils

La documentation jetée contient des informations sur arrêt progressif de la jetée. C'est probablement pas assez d'informations, mais il peut vous aider à démarrer.

Je n'ai pas commencé à jouer avec compojure encore, mais je préfère en général de travailler avec Tomcat. Il est plus complet; entre autres, il y a une API bien documenté pour le démarrer et l'arrêter, il écoute la commande d'arrêt sur un port dédié; il y a des tâches ant de le faire, et ils pourraient bien sûr être appelé à partir d'une application Java aussi bien. Je ne sais pas quel genre de magie Compojure fait avec connexion REPL à une instance en cours d'exécution du conteneur Web, et si / comment le rechargement des classes automatique arrive ... quelqu'un d'autre, espérons sera en mesure de fournir plus d'informations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top