Доступ к HttpSession из servletContext в Grails BootStrap - PullRequest
0 голосов
/ 19 марта 2012

Можем ли мы получить доступ к HttpSession в Grails BootStrap через servletContext (или grailsApplication)? Когда пользователь вошел в приложение, я сохранил некоторую информацию о сеансе и использую ее в динамическом методе beforeInsert. Но я не знаю, как получить эту информацию на сессии.
Вот мой код начальной загрузки:

class BootStrap {
    def grailsApplication
    def init = { servletContext ->
        grailsApplication.getArtefacts("Domain").each { org.codehaus.groovy.grails.commons.GrailsDomainClass gc ->
            gc.metaClass.beforeInsert = {
                // Do something here with information stored in session
            }

            gc.metaClass.beforeUpdate = {
                               // Do something here with information stored in session
                    }
        }
    }
    def destroy = {
    }
}

Большое спасибо

1 Ответ

0 голосов
/ 20 марта 2012

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

Что вы можете сделать, это HttpSessionListener, который прослушивает создание и удаление сеанса.Я предполагаю, что вы можете каким-то образом получить доступ к сеансам, которые были сериализованы на диск после выключения сервера, но это потребует от вас вмешательства в собственные реализации Tomcat (возможно, некоторые из Valve)

...