Как получить контекст сеанса или веб-приложения при запуске через run-script? - PullRequest
3 голосов
/ 29 января 2012

У меня есть отличный скрипт, который запускается с использованием Grails run-script. Он заполняет базу данных большим количеством статических данных. Из-за этой проблемы сеанса Grails / Hibernate мне иногда приходится очищать сеанс. Если я этого не сделаю, то приложению не хватает памяти. Таким образом, при запуске с использованием run-script как получить ссылку на контекст сеанса или веб-приложения (GrailsWebApplicationContext)?

1 Ответ

5 голосов
/ 29 января 2012

Если вы заглянете внутрь _RunScript.groovy, вы увидите, что контекст приложения и объект GrailsApplication внедряются в привязку вашего скрипта.

def shell = new GroovyShell(classLoader, new Binding(ctx: appCtx, grailsApplication: grailsApp))

После того, как они у вас есть, получить доступ к текущему сеансу легко, в вашем скрипте просто спросите у фабрики сеансов текущий сеанс, и вы можете очистить его:

def currentSession = ctx.sessionFactory.currentSession
currentSession.clear()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...