Я видел аналогичный вопрос, заданный с той же ошибкой, что и я, однако контекст был другим. У меня нет проблем с тестированием, скорее, создание пользователя и роли полностью завершается ошибкой при запуске.
При использовании плагина spring-security-core 1.2.7 с grails 1.3.7 и tomcat 6 я получаю этот сбой:
04.01.2012, 16:23:12,476 [основная] ОШИБКА context.ContextLoader — ошибка инициализации контекста org.springframework.beans.factory.access.BootstrapException: ошибка при выполнении начальной загрузки; вложенным исключением является org.codehaus.groovy.runtime.InvokerInvocationException: 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.GrailsContextLoader.createWebApplicationContext(GrailsContextLoader.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() по сравнению с save(flush: true) не имеет значения.
Редактировать 3: кажется, это может быть ошибка в текущей версии плагина: http://jira.grails.org/browse/GPSPRINGSECURITYCORE-152 Я буду держать вас в курсе!
Редактировать 4: Подтверждено, возврат к версии 1.2.6, кажется, решает проблему!
grails cleanи повторно развернете его, все равно произойдет сбой? Классы домена по-прежнему будут работать, поскольку они не связаны с плагином (за исключением кодировки паролей в пользовательском классе, вам нужно будет это прокомментировать). Я пытаюсь понять, действительно ли это проблема с плагином или это отвлекающий маневр. - person Burt Beckwith   schedule 05.01.2012