grails: куда можно поместить служебный код, который не вызывает перезапуск контейнера?

#grails

#grails

Вопрос:

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

Помещение кода в /utils или в src / groovy вызывает перезапуск при сохранении, по крайней мере, с использованием Intellij, но я полагаю, что это одно и то же, независимо от того, где разрабатывается Grails.

Возможно, у вас есть какая-то общая информация / идеи о том, как Grails это делает — включает новый код, но не требует перезапуска контейнера, если это относится только к контроллерам?

(версия 1.3.7)

Комментарии:

1. Интересный вопрос… в документации Grails есть страница, но она нуждается в некоторой любви (ей три года): grails.org/Auto Reloading

2. Вы уже попробовали новый Grails 2.0.M2? Он поставляется с новым агентом JVM для обработки перезагрузки измененных классов, поэтому перезапуск контейнера не требуется.

3. Нет, я делаю производственный релиз, поэтому пока не хотел переходить на 2.0, и у меня не было времени попробовать. Спасибо, что указали на это, я буду с нетерпением ждать этого.

Ответ №1:

Вам не повезло из коробки, если вы не хотите использовать 2.0. Альтернативой является отключение автоматической перезагрузки и добавление чего-то вроде jrebel. Подробности см. В этом блоге.

Комментарии:

1. Спасибо, Грегг. Я думаю, что я сохраню служебный код в классе контроллера в ближайшем будущем, пока не обновлюсь до версии 2.0. Странно, однако, в настоящее время я обновляю код контроллера — добавляю что-то простое, например println, и никаких изменений не происходит, хотя я знаю, что метод подвергается удару (поскольку он имеетеще один println в нем в конце). Я использую Intellij.