Выполнение класса в удаленном JVM - PullRequest
1 голос
/ 05 мая 2009

У меня есть небольшой тестовый класс, который я хочу запустить на конкретном jvm, который уже запущен (в основном это веб-приложение, работающее на Tomcat). Причина, по которой я хочу это сделать, заключается в том, что я хочу выполнить небольшой тестовый класс (с методом main и всем) в пределах этого jvm, чтобы получить ту же среду (загруженные и инициализированные классы) для моего тестового класса.

Можно ли указать, что, скажем, через параметр jvm, что он не должен инициализировать новый vm для выполнения моего класса, а вместо этого пойти и выполнить на удаленном vm и показать мне результат здесь, на моей консоли. То есть локальный jvm действует как некий тонкий прокси?

Я не знаю, есть ли какие-нибудь инструменты, которые должны сделать это возможным. Также где-то слышали, что java 6 jvm поставляется с такой опцией, это правда? Пожалуйста, помогите мне.

Спасибо

Ответы [ 5 ]

1 голос
/ 15 ноября 2015

Прочитав этот вопрос и ответы, я решил развернуть свою маленькую утилиту: remoteJunit

Это легкий и динамически загружает классы с клиента на сервер JVM. Он использует HTTP для связи.

1 голос
/ 05 июня 2009

Возможно, вы захотите взглянуть на btrace . Это позволяет вам запускать код в уже запущенной JVM, если вы не меняете состояние переменных внутри этой JVM. При таком типе трассировки вы можете решить свою проблему другим способом. Не путем запуска дополнительного кода в форме нового класса, а путем добавления безопасного кода и существующего класса, работающего внутри JVM.

Например, вы можете System.out.println имя файла при вызове File.exists.

0 голосов
/ 01 ноября 2009

Я предполагаю, что "маленький тестовый класс" - это, по сути, некоторый код отладки, который вы хотите запустить для мониторинга вашего реального приложения, которое удаленно развернуто на Tomcat. В этом случае вы должны подключить отладчик Eclipse удаленно к экземпляру Tomcat, чтобы вы могли установить точку останова в интересных местах, а затем использовать представление Eclipse для отображения любого произвольного кода, который вам может понадобиться для выполнения расширенного кода отладки. Поскольку java поддерживает горячую замену кода с использованием механизма отладки, вы также можете изменить существующий код на удаленной стороне новым кодом во время выполнения.

0 голосов
/ 05 июня 2009

RMI также сделает магию.

http://java.sun.com/javase/6/docs/technotes/guides/rmi/index.html

Заставьте ваше веб-приложение запустить реестр RMI и зарегистрировать ваш сервис бобы там.

Затем в другой JVM вы можете запустить программу, которая запрашивает реестр RMI. запущен вашим веб-приложением для служб, которые вы хотите проверить и все готово.

0 голосов
/ 05 мая 2009

Возможно, вы найдете JMX полезным. Зарегистрируйте MBean в процессе сервера. Вызовите его с помощью visualvm (или jconsole). (учебник) Сам никогда не пробовал, ум.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...