Плагин Spring Security Grails дает сбой при развертывании как war tomcat 6

Я видел аналогичный вопрос, заданный с той же ошибкой, что и я, однако контекст был другим. У меня нет проблем с тестированием, скорее, создание пользователя и роли полностью завершается ошибкой при запуске.

При использовании плагина 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, кажется, решает проблему!


person Quad64Bit    schedule 04.01.2012    source источник
comment
Если вы удалите подключаемый модуль, запустите grails clean и повторно развернете его, все равно произойдет сбой? Классы домена по-прежнему будут работать, поскольку они не связаны с плагином (за исключением кодировки паролей в пользовательском классе, вам нужно будет это прокомментировать). Я пытаюсь понять, действительно ли это проблема с плагином или это отвлекающий маневр.   -  person Burt Beckwith    schedule 05.01.2012
comment
Да, это на 100% воспроизводимо в любом чистом проекте. Создайте чистое приложение Grails, установите ядро ​​​​безопасности Spring, добавьте группу или пользователя в загрузочную загрузку, убедитесь, что вы вызываете save() для этого пользователя/группы, чтобы сохранить его, а затем попробуйте выполнить Grails prod runWar. Или война с Grails и выполнение развертывания на сервере приложений. Все еще бывает   -  person Quad64Bit    schedule 05.01.2012
comment
Извините, я имею в виду, что это не работает без установленного плагина. Я не вижу, как плагин как-то повлияет на GORM.   -  person Burt Beckwith    schedule 05.01.2012


Ответы (2)


Вы выполнили команду s2-quickstart?

Правильно ли настроен Config.groovy?

grails.plugins.springsecurity.userLookup.userDomainClassName="....User"
grails.plugins.springsecurity.userLookup.authorityJoinClassName="....UserRole"
grails.plugins.springsecurity.authority.className="....Role"
person matcauthon    schedule 05.01.2012
comment
Да, все установлено по умолчанию, и, как я уже сказал, оно работает с простым приложением runApp для Grails, а не работает grails prod run-war. - person Quad64Bit; 05.01.2012

Похоже, это ошибка в текущей версии плагина: http://jira.grails.org/browse/GPSPRINGSECURITYCORE-152

Я вернулся к 1.2.6 и вообще никаких проблем. Надеюсь, это поможет кому-то еще (я знаю, что потерял 2 часа на это)!

person Quad64Bit    schedule 05.01.2012