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

Spring Security grails插件在部署为war tomcat 6时失败,grails,spring-security,tomcat6,war,Grails,Spring Security,Tomcat6,War,我看到过一个类似的问题,问的错误和我的完全一样,但是上下文不同。我在测试方面没有问题,相反,用户和角色创建在启动时完全失败 当将spring security core 1.2.7插件与grails 1.3.7和tomcat 6一起使用时,我遇到了以下故障: 2012-01-04 16:23:12476[main]错误context.ContextLoader-上下文初始化失败 org.springframework.beans.factory.access.BootstrapException

我看到过一个类似的问题,问的错误和我的完全一样,但是上下文不同。我在测试方面没有问题,相反,用户和角色创建在启动时完全失败

当将spring security core 1.2.7插件与grails 1.3.7和tomcat 6一起使用时,我遇到了以下故障:

2012-01-04 16:23:12476[main]错误context.ContextLoader-上下文初始化失败 org.springframework.beans.factory.access.BootstrapException:执行引导时出错;嵌套的异常为org.codehaus.groovy.runtime.invokerinJournationException:groovy.lang.MissingMethodException:没有方法的签名:setTest.Role.save()适用于参数类型:(java.util.LinkedHashMap)值:[[flush:true]] 可能的解决方案:wait()、any()、wait(long)、any(groovy.lang.Closure)、sleep(long)、use([Ljava.lang.Object;) 位于org.codehaus.groovy.grails.web.context.GrailContextLoader.createWebApplicationContext(grailContextLoader.java:87)

当使用grails runApp启动时,该应用程序运行良好,但在战争中,每次都无法部署。错误似乎集中在引导中创建的用户帐户/角色上:

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()与保存(flush:true)没有区别

编辑3:看起来可能是当前版本插件中的错误: 我会通知你们的

编辑4:已确认,恢复到1.2.6版似乎可以解决问题!

您是否运行了s2 quickstart命令

Config.groovy设置正确吗

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

这似乎是当前版本插件中的一个错误:


我恢复到1.2.6版,没有任何问题。希望这对其他人有帮助(我知道我为此浪费了2个小时)!

如果卸载插件并运行
grails clean
并重新部署,它是否仍然失败?域类仍然可以工作,因为它们没有与插件耦合(除了用户类中的密码编码内容,你需要对此进行注释)。我正在尝试看看这是否真的是一个插件问题,或者这是否是一个误导。是的,这在任何干净的项目中都是100%可复制的。制作一个干净的grails应用程序,安装spring security core,将组或用户添加到引导程序中,确保调用save()对该用户/组进行持久化,然后尝试grails prod runWar。或grails war,并部署到应用服务器。仍然发生抱歉,我的意思是,如果没有安装插件,它会失败。我看不出插件会以任何方式影响GORM。是的,一切都是默认的,正如我所说,它确实可以与简单的grails runApp一起工作,这是grails prod run war th至少失败