Estoy escribiendo una aplicación web usando ring y clojure. Estoy usando el adaptador de muelle para el servidor de desarrollo y emacs/SLIME para IDE. Si bien la función de recapitulación ayuda, el run-jetty bloquea mi sesión de limo y me gustaría poder iniciar/detenerlo a voluntad sin tener que ejecutarlo en una sesión de terminal separada. Idealmente, me gustaría definir un agente de servidor y funciones start-server y stop-server que iniciarían/detendrían el servidor dentro del agente. es posible?¿Cómo dejo el servidor de embarcadero en clojure?
Respuesta
por lo general tienen una línea en mi aplicación anillo que tiene el siguiente aspecto:
(defonce server (run-jetty #'my-app {:port 8080 :join? false}))
Esto evita el bloqueo hasta el REPL. También me permite recompilar este archivo sin preocuparme de que mi servidor sea redefinido. También le permite interactuar en el REPL así:
user=> (.stop server)
y
user=> (.start server)
La documentación del Jetty tiene alguna información sobre graceful shutdown de Jetty. Probablemente no sea suficiente información, pero puede ayudarlo a comenzar.
No he empezado a jugar con compojure todavía, pero en general prefiero trabajar con Tomcat. Es más completo; entre otras cosas, hay una API bien documentada para iniciar y cerrar, escucha el comando de apagado en un puerto dedicado; hay ant
tareas para hacer esto y, por supuesto, también se pueden llamar desde una aplicación Java. Simplemente no sé qué clase de magia hace Compojure al conectar el REPL a una instancia en ejecución del contenedor Web, y si/cómo se produce la recarga automática de clases ... con suerte alguien más podrá proporcionar más información.
Bueno, en este caso, ni siquiera estoy usando compojure, sólo estoy usando ring.jetty.adapter para iniciar embarcadero servidor. La razón para ir con Jetty es que no tengo que volver a compilar todo el tiempo. –
Guau, ¿Jetty te permite hacer eso? Guay. Tendrá que aprender sobre eso pronto-ish. ¡Gracias! –
- 1. detener el servidor de desarrollo cuando dejo de depurar
- 2. Iniciar el servidor de embarcadero incrustado para un archivo JAR
- 3. doGet llamado dos veces embarcadero servidor
- 4. ¿Cómo dejo de herencia web.config
- 5. Embarcadero: ¿cómo deshabilitar el registro?
- 6. Ejecutando el embarcadero del eclipse
- 7. cómo configurar el tiempo de espera de conexión/solicitud para el servidor de embarcadero?
- 8. Apagado programático de embarcadero
- 9. Configuración de embarcadero en Eclipse
- 10. Cómo compilar la aplicación clojure con el servidor de anillos
- 11. despliegue de scalatra en el embarcadero
- 12. ¿Cómo comenzar la elevación en el embarcadero incrustado?
- 13. Definición de dos orígenes de datos en embarcadero (embarcadero-env.xml)
- 14. escribiendo un servidor de multiplexación en clojure?
- 15. implementación en caliente en el embarcadero incrustado
- 16. Bibliotecas para incrustar embarcadero?
- 17. Embarcadero: Ruta de guerra extraída
- 18. ¿Cómo puedo detener el proceso generado en el embarcadero 7 usando jetty.sh?
- 19. Despliegue automático con Jenkins/embarcadero
- 20. Código de recarga en un servidor ring-clojure de producción
- 21. Problemas de PermGen con el elevador y el embarcadero
- 22. Uso de Clojure con un servidor REST basado en anotaciones
- 23. Embarcadero de integración con RESTEasy
- 24. Cómo integrar aplicaciones web Clojure en Apache
- 25. Servlet 3.0 en apoyo embarcadero incrustado 8,0
- 26. Missing Maven Plugin embarcadero
- 27. Tomcat VS embarcadero
- 28. Embarcadero: servlets vs handlers
- 29. clojure/ring/jetty: Estoy usando> lein ring server. ¿Cómo configuro la instancia de embarcadero que se crea una instancia?
- 30. Integración del embarcadero con JAX-RS-Jersey
¡Exactamente lo que estaba buscando! –
Recibo este error: 'No se ha encontrado ningún campo coincidente: comienzo de la clase clojure.lang.PersistentList [Clase lanzada java.lang.IllegalArgumentException]'. ¿Algunas ideas? – Tyler
No importa, el problema era que la definición no se estaba redefiniendo - imagine eso :) – Tyler