2010-11-09 11 views
25

Mam aplikację internetową java działającą pod tomcat w Sun Java 6 JVM. Czy istnieje sposób dołączenia scala lub clojure REPL do działającej maszyny JVM?Dołącz replikę clojure/scala do działającego JVM

Po uruchomieniu aplikacji internetowej kontekst, w którym mają być nawiązywane połączenia, jest już skonfigurowany w uruchomionej maszynie wirtualnej. W związku z tym może być bardzo pomocne w wywoływaniu arbitralnych wywołań metod Java dla tworzenia przyrostowych, eksploracyjnych i debugowania.

Odpowiedz

20

skopiowane odpowiedzi z drugiej kwestii, jak na swój wniosek :

liverepl: Podłącz Clojure rEPL z prowadzeniem procesów Java lub Clojure bez specjalnej konfiguracji

ze strony: rozpocząć Clojure R EPL połączony z dowolnym działającym procesorem Java lub Clojure bez konieczności uprzedniego konfigurowania procesu w jakikolwiek specjalny sposób. Teraz obsługuje połączenie z aplikacjami internetowymi Tomcat. Możesz użyć polecenia rep do uruchomienia kodu, sprawdzić zmienne i przedefiniować funkcje Clojure.

https://github.com/djpowell/liverepl

7

Nie ma mowy, aby dołączyć rEPL do już trwającego JVM, więc trzeba myśleć o wstecznej problemu ...

Uruchom REPL na serwerze, albo gdy program jest uruchomiony lub w odpowiedzi do przychodzącego połączenia klienta (używając np. Telnet).

Jest to dobry przykład tutaj: http://blog.homecloud.ca/2010/03/scripster-interactive-scala-repl-using.html

Można również zorganizować tłumacza instancji na serwerze, a następnie wystawiać interfejs WWW. Jest to podejście przyjęte przez http://www.simplyscala.com/


Jeśli myślisz debugowania, a następnie chcesz być lepiej serwowane przez tej odpowiedzi: Drop into interpreter during arbitrary scala code location

+1

Po odpowiedzi w poprzednim podobnym pytaniu http://stackoverflow.com/questions/4131006/attach-a-clojure-repl-to-a-running-jvm wydaje się, że jest to możliwe, przynajmniej replikę clojure (scala też przypuszczam) – jneira

+0

Myślę, że ta odpowiedź jest dobra w pokazywaniu alternatyw, a w czasie pisania nie było żadnej możliwości zrobienia tego w Scali, ale teraz wygląda na to, że https://github.com/ngocdaothanh/scalive może zaoferować podobne rozwiązanie. –

+0

Zaczynam myśleć, że mam prześladowcę ... Spadek na ten temat i kilka innych moich odpowiedzi nie ma żadnego sensu. –

5

Można to wykorzystać: https://github.com/wirde/swank-inject

Pozwala dołączyć do repl Clojure do uruchomionego procesu Java (z włączonym zdalnego debugowania).

Można również określić liczbę klas (pojedynczych), dla których instancje zostaną znalezione i powiązane z symbolem dostępnym w repl.

1

Dla Scala REPL podłączenie do innych JVM, spójrz na Scalive.