2009-10-15 3 views
0

У меня довольно сложное серверное приложение, которое часто требует от меня увидеть, что происходит с его внутренними компонентами, чтобы отлаживать и исправлять проблемы.Рекомендации по внедрению языка сценариев Java для отладки/удаленного администрирования

Поэтому я встроил экземпляр Beanshell, в который я могу подключиться telnet (обычно через туннель ssh), но мне интересно, есть ли лучший способ.

Несколько ограничений:

  • Нет Readline поддержки, которую я могу обойти с помощью «rlwrap» на телнет, но не идеально
  • Tab-завершение переменных и методов было бы очень приятно, но я не нашел способ сделать это
  • предварительно определением переменного (для доступа к вещам, которые мне нужно часто доступ), кажется, не работает, я должен заранее определить функции вместо

Все -в целом его довольно неуклюжий, хотя Beanshell имеет хорошее преимущество, что его супер-набор Java, поэтому никто не должен изучать другой язык программирования, чтобы использовать его.

Мне интересно, есть ли у других опыт облегчения удаленной отладки/администрирования с помощью языка сценариев (Beanshell или иначе), возможно, кто-то нашел лучший подход.

ответ

1

В одном из наших приложений есть интерфейс BeanShell, который подключается к нашему приложению через JMX с RMI + SSL.

Вы действительно можете предварительно определить переменные, вызвав Interpreter#set(), прежде чем на самом деле вызвать интерпретатора.

Кроме этого, я согласен с вами в отношении функциональности «readline». Существует проект под названием java-readline (и BSH, по-видимому, поставляется с плагином для него), который предназначен для обеспечения функциональности, но я не исследовал его использование. Он также требует библиотеки JNI.

Я слышал, что люди используют Scala и Groovy для реализации клиентов командной строки, но на данный момент я не думаю, что Scala API для встраивания интерпретатора еще стандартизирован. Я также не верю, что они поддерживают функции «readline», которые вы ищете.

Смежные вопросы