部署为war tomcat 6时,Spring Security grails插件失败

时间:2012-01-04 21:49:46

标签: grails spring-security tomcat6 war

我看到一个类似的问题与我有完全相同的错误,但是背景不同。我没有测试问题,而是用户和角色创建在启动时完全失败。

当使用带有grails 1.3.7和tomcat 6的spring-security-core 1.2.7插件时,我遇到了这个失败:

2012-01-04 16:23:12,476 [main] ERROR context.ContextLoader - 上下文初始化失败 org.springframework.beans.factory.access.BootstrapException:执行bootstraps时出错;嵌套异常是org.codehaus.groovy.runtime.InvokerInvocationException:groovy.lang.MissingMethodException:没有方法签名:setTest.Role.save()适用于参数类型:(java.util.LinkedHashMap)值:[[flush:真正]] 可能的解决方案:wait(),any(),wait(long),any(groovy.lang.Closure),sleep(long),use([Ljava.lang.Object;)     at org.codehaus.groovy.grails.web.context.GrailsContextLoader.createWebApplicationContext(GrailsContextLoader.java:87) ...

使用grails runApp启动应用程序时运行正常,但在war'ing时,每次都无法部署。该错误似乎以我在bootstrap中的用户帐户/角色创建为中心:

def adminRole = new Role(authority: 'ROLE_ADMIN').save(flush: true)
def userRole = new Role(authority: 'ROLE_USER').save(flush: true)
def testUser = new User(username: 'me', enabled: true, password: 'password')
testUser.save(flush: true)
UserRole.create testUser, adminRole, true

这是直接从springSecurity教程中获取的。有什么建议吗?

编辑:此外,这也会因grails prod run-war而失败,并且与角色/用户创建直接相关。即使用户和角色的名称不同,问题仍然存在。

编辑2:此外,失败在.save()上,当然原始错误消息显示。我验证了常规.save()与save(flush:true)没有区别。

编辑3:它似乎可能是当前插件版本中的一个错误:http://jira.grails.org/browse/GPSPRINGSECURITYCORE-152 我会让你们发帖!

编辑4:确认,恢复到版本1.2.6似乎解决了这个问题!

2 个答案:

答案 0 :(得分:1)

您是否运行了命令 s2-quickstart

Config.groovy 是否设置正确?

grails.plugins.springsecurity.userLookup.userDomainClassName="....User"
grails.plugins.springsecurity.userLookup.authorityJoinClassName="....UserRole"
grails.plugins.springsecurity.authority.className="....Role"

答案 1 :(得分:1)

这似乎是当前插件版本中的一个错误:http://jira.grails.org/browse/GPSPRINGSECURITYCORE-152

我恢复到1.2.6,完全没有问题。希望这对其他人有帮助(我知道我失去了2个小时)!