Встраиваем groovy shell в приложение
У нас на работе иногда возникает необходимость получить доступ к работающему java приложению, чтобы посмотреть какие-нибудь данные или подёргать методы. Раньше мы обходились тем, что писали jsp, закидывали в каталог, в котором развёрнуто наше приложение, и затем запрашивали эту jsp. Это было не очень удобно.И однажды мне пришла в голову мысль облегчить себе жизнь, встроив groovy shell в приложение, сделав доступ к нему через telnet.
Мы используем spring, поэтому сам сервис реализован в виде spring-бина и сервис даёт доступ к контексту, в котором он определён.
Для того, чтобы включить telnet-сервер, нужно добавить в конфиг следующие строчки:
В groovy shell работает автодополнение идентификаторов бинов и вызываемых методов (по клавише tab).
Пример сессии:
$ 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.