如何通过运行脚本运行时获取会话或Web应用程序上下文?

时间:2012-01-29 03:19:18

标签: grails

我有一个使用Grails的run-script运行的groovy脚本。它从大量静态数据填充数据库。由于this Grails/Hibernate session issue,我必须偶尔清除会话。如果我没有,那么应用程序内存不足。因此,当使用run-script运行时,如何获得对会话或Web应用程序上下文的引用(GrailsWebApplicationContext)?

1 个答案:

答案 0 :(得分:5)

如果查看_RunScript.groovy,您会看到应用程序上下文和GrailsApplication对象被注入到脚本的绑定中。

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

有了这些内容后,访问当前会话很容易,在您的脚本中只需向会话工厂询问当前会话,您可以清除它:

def currentSession = ctx.sessionFactory.currentSession
currentSession.clear()