На работе иногда нам нужно получить доступ к работающему Java-приложению, чтобы просмотреть некоторые данные или изменить методы.
Раньше мы обходились написанием jsp, бросанием его в каталог, в котором развернуто наше приложение, и последующим запросом этого jsp. Это было не очень удобно.
И однажды мне пришла в голову идея облегчить себе жизнь, встроив в приложение заводную оболочку, сделав ее доступной по телнету.
Мы используем Spring, поэтому сам сервис реализован как Spring Bean, и сервис обеспечивает доступ к контексту, в котором он определен.
Для того, чтобы включить telnet-сервер, вам необходимо добавить в конфиг следующие строки:
По соображениям безопасности сокет привязан только к интерфейсу обратной связи.<bean class="ru.ind.tgs.GroovyShellService" p:listenPort="3333"/>
Теперь, после запуска проекта, мы можем подключиться к работающей Java-машине с помощью telnet, в котором мы увидим groovy-интерфейс оболочки, где мы можем написать произвольный groovy-код. В оболочке доступны специальные имена переменных: context — для доступа к контексту Spring, в котором находится наш GroovyShellService и многие идентификаторы bean-компонентов, определенные в этом контексте, для прямого доступа к ним.
В groovy-оболочке работает автодополнение идентификаторов компонентов и вызываемых методов (с помощью клавиши табуляции).
Пример сеанса: $ telnet 127.0.0.1 3333
Trying 127.0.0.1.
Connected to 127.0.0.1.
Escape character is '^]'.
Groovy Shell (1.8.5, JVM: 1.7.0_51) Type 'help' or '\h' for help. ----------------------------------------------------------------------------------------------------------- groovy:000> context.isActive() ===> true groovy:000> Arrays.toString(context.getBeanDefinitionNames()) ===> [org.springframework.context.annotation.internalConfigurationAnnotationProcessor, .
]
groovy:000> userDAO.findAll();
===> [XXX, YYY]
Исходный код находится по адресу github .
Теги: #groovy Shell #telnet #java
-
Как Принять Участие В Тестировании Видеоигр
19 Oct, 24 -
Обзор Гонораров Фрилансеров
19 Oct, 24 -
Подкаст Unclesoky - Эпизод №27
19 Oct, 24