2010-11-09 7 views
25

Tengo una aplicación web java ejecutándose bajo Tomcat en una JVM Sun Java 6. ¿Hay alguna forma de adjuntar un scala o clojure REPL a la JVM en ejecución?Adjuntar una copia de clojure/scala a una JVM en ejecución

Una vez que la aplicación web está en funcionamiento, el contexto en el que se realizarán las llamadas ya está configurado en la máquina virtual en ejecución. Por lo tanto, esto puede ser realmente útil al invocar llamadas arbitrarias al método java para el desarrollo incremental, exploratorio y para la depuración.

Respuesta

20

copia sobre la respuesta de la otra pregunta según su petición :

liverepl: Conecte un Clojure REPL a la ejecución de los procesos Java o Clojure sin ninguna configuración especial

Desde el sitio web: Iniciar una Clojure R EPL conectado a cualquier proceso Java o Clojure en ejecución sin necesidad de configurar el proceso de ninguna manera especial de antemano. Ahora es compatible con la conexión a aplicaciones web de Tomcat. Puede usar el código repl para ejecutar, inspeccionar variables y redefinir las funciones de Clojure.

https://github.com/djpowell/liverepl

7

No hay manera de adjuntar un REPL a una JVM ya se encuentra corriendo, por lo que es necesario pensar en el problema al revés ...

inicio de la réplica en el servidor, o bien cuando el programa se pone en marcha o en respuesta a una conexión de cliente entrante (usando, por ejemplo, Telnet).

Hay un buen ejemplo aquí: http://blog.homecloud.ca/2010/03/scripster-interactive-scala-repl-using.html

También podría alojar una instancia del intérprete en su servidor, a continuación, exponer una interfaz web. Este es el enfoque adoptado por http://www.simplyscala.com/


Si usted está pensando en la depuración, a continuación, usted estaría mejor servido por esta respuesta: Drop into interpreter during arbitrary scala code location

+1

Siguiendo la respuesta en la pregunta similar anterior http://stackoverflow.com/questions/4131006/attach-a-clojure-repl-to-a-running-jvm parece que es posible, al menos un clojure repl (scala Supongo que también) – jneira

+0

Creo que esta respuesta es buena para mostrar alternativas y, al momento de escribir, no había ninguna opción para hacer este tipo de cosas en Scala, pero ahora parece que https://github.com/ngocdaothanh/scalive puede ofrecer solución similar. –

+0

Estoy empezando a pensar que tengo un acosador ... La votación negativa sobre esta y algunas de mis otras respuestas no tiene ningún sentido en absoluto. –

5

Usted podría utilizar esto: https://github.com/wirde/swank-inject

Le permite adjuntar un repl Clojure a un proceso java ejecutándose (con activar la depuración remota).

También puede especificar un número de clases (singletons) para las cuales las instancias se encontrarán y se vincularán a un símbolo disponible en el repl.

1

Para Scala REPL se conecta a otra JVM, eche un vistazo a Scalive.

Cuestiones relacionadas