2010-11-09 3 views
25

J'ai une application Web Java s'exécutant sous tomcat dans une machine virtuelle Java Sun Java 6. Y at-il un moyen d'attacher une scala ou une REPL clojure à la JVM en cours d'exécution?Associez une réplique clojure/scala à une machine virtuelle Java en cours d'exécution

Une fois que la webapp est opérationnelle, le contexte dans lequel les appels doivent être effectués est déjà configuré dans la machine virtuelle en cours d'exécution. Par conséquent, cela peut être très utile pour invoquer des appels de méthode java arbitraires pour un développement incrémentiel, exploratoire et pour le débogage.

Répondre

20

Copié sur la réponse de l'autre question à votre demande :

liverepl: Connectez un Clojure REPL à l'exécution des processus Java ou Clojure sans aucune configuration spéciale

Depuis le site Web: Démarrer un Clojure R EPL connecté à tout processus Java ou Clojure en cours d'exécution sans nécessiter le processus à configurer d'une manière particulière au préalable. Prise en charge de la connexion aux applications Web Tomcat. Vous pouvez utiliser le repl pour exécuter du code, inspecter des variables et pour redéfinir les fonctions Clojure.

https://github.com/djpowell/liverepl

7

Il n'y a aucun moyen de joindre un REPL à une machine virtuelle Java déjà courant, vous devez penser à ce problème en arrière ...

Démarrez le REPL sur le serveur, que ce soit lorsque le programme est lancé ou en réponse à une connexion client entrante (utilisant par exemple Telnet).

Il y a un bon exemple: http://blog.homecloud.ca/2010/03/scripster-interactive-scala-repl-using.html

Vous pouvez également organiser une instance interprète dans votre serveur, puis exposer une interface web. Telle est l'approche adoptée par http://www.simplyscala.com/


Si vous envisagez de débogage, alors vous seriez mieux servis par cette réponse: Drop into interpreter during arbitrary scala code location

+1

Suite à la réponse à la question similaire précédente http://stackoverflow.com/questions/4131006/attach-a-clojure-repl-to-a-running-jvm il semble que ce soit possible, au moins un clojure repl (scala trop je suppose) – jneira

+0

Je pense que cette réponse est bonne en montrant des alternatives et au moment de l'écriture il n'y avait pas d'option pour faire ce genre de chose dans Scala, mais maintenant il semble que https://github.com/ngocdaothanh/scalive peut offrir solution similaire. –

+0

Je commence à penser que j'ai un harceleur ... Le downvote sur ceci et quelques unes de mes autres réponses n'a aucun sens. –

5

Vous pouvez utiliser ceci: https://github.com/wirde/swank-inject

Vous permet de joindre un rempl Clojure à un processus en cours d'exécution Java (avec le débogage à distance activé).

Vous pouvez également spécifier un nombre de classes (singletons) pour lesquelles les instances seront trouvées et liées à un symbole disponible dans le repl.

1

Pour Scala REPL se connectant à d'autres JVM, jetez un oeil à Scalive.

Questions connexes