Управление статическими ресурсами в Grails

Управление статическими ресурсами в Grails

Что я хотел этим сказать...

Во-первых, если все делать так, как говорят книги и мануал, то читать эту статью не надо.

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

"/**" (controller:"lala", action:"lala")

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

В этом случае мы теряем доступ к подобным статическим ресурсам - тем, что лежат обычно в папочке web-app.

Итак, чтобы сохранить свои имиджи при деплое в tomcat мы просто создаем соответствующие контексты к статическим ресурсам и забываем о проблеме.

А вот в случае с development режимом при разработке и использовании команды grails run-app  все немного сложнее. Нам нужно получить прямой доступ к jetty где-то перед его запуском.

Тут нам на помощь приходит система скриптов и событий Grails

  1. создаем в каталоге scripts приложения файл с названием _Events.groovy
  2. в этот файл помещаем closure c именем eventConfigureJetty
  3. это замыкание принимает в параметрах экземпляр сервера 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)

mem: 1161 total: 11 module: 6 xsl: 3