
Управление статическими ресурсами в Grails
Что я хотел этим сказать...
Во-первых, если все делать так, как говорят книги и мануал, то читать эту статью не надо.
Во-вторых, надобность в этом появляется только в том случае, если используются зубодробительные URL мэппинги типа
"/**" (controller:"lala", action:"lala")
то есть, в том редком случае, когда мэппинг берет на себя вообще любой запрос, в том числе, возможный запрос к статическим ресурсам приложения - картинкам, яваскриптам и проч.
В этом случае мы теряем доступ к подобным статическим ресурсам - тем, что лежат обычно в папочке web-app.
Итак, чтобы сохранить свои имиджи при деплое в tomcat мы просто создаем соответствующие контексты к статическим ресурсам и забываем о проблеме.
А вот в случае с development режимом при разработке и использовании команды grails run-app все немного сложнее. Нам нужно получить прямой доступ к jetty где-то перед его запуском.
Тут нам на помощь приходит система скриптов и событий Grails
- создаем в каталоге scripts приложения файл с названием _Events.groovy
- в этот файл помещаем closure c именем eventConfigureJetty
- это замыкание принимает в параметрах экземпляр сервера jetty, делаем с ним все,что считаем нужным. В нашем случае - создаем статические контексты
Итоговый код в файле _Events.groovy будет выглядеть примерно так:
import org.mortbay.jetty.webapp.*
eventConfigureJetty = {server->
WebAppContext resourceContext = new WebAppContext('/path/to/css/', '/css')
server.addHandler(resourceContext);
}
После запуска сервера командой grails run-app должен быть нормальный доступ к заветной папочке, минуя grails
Комментарии (0)