2012-01-04 2 views
2

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

При использовании плагина пружинными безопасности ядро ​​1.2.7 с Грааль 1.3.7 и Tomcat 6, я получаю эту ошибку:

2012-01-04 16: 23: 12,476 [главной] Ошибку контекста. ContextLoader - Ошибка инициализации контекста org.springframework.beans.factory.access.BootstrapException: ошибка при выполнении bootstraps; Вложенное исключение - 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), использовать ([Ljava.lang.Object;) at org.codehaus. groovy.grails.web.context.GrailsContextLoader.createWebApplicationContext (GrailsContextLoader.java:87) ...

приложение работает нормально при запуске с Grails runApp, но на war'ing, он не разворачивать каждый раз. Ошибка, кажется, сосредотачивается вокруг моего создания учетной записи/роли пользователя в загрузчике:

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 и напрямую связано с созданием роли/пользователя. Даже с разными именами для пользователей и ролей проблема сохраняется.

Редактировать 2: Кроме того, сбой происходит на .save(), который, конечно же, отображается в исходном сообщении об ошибке. Я проверил, что обычный .save() против save (flush: true) не имеет значения.

Редактировать 3: Кажется, это может быть ошибка в текущей версии плагина: http://jira.grails.org/browse/GPSPRINGSECURITYCORE-152 Я буду держать вас в курсе!

Редактировать 4: Подтверждено, возвращение к версии 1.2.6, похоже, устраняет проблему!

+1

Если вы удалите плагин и запустите «grails clean» и передислоцируете, он все еще не работает? Классы домена по-прежнему будут работать, поскольку они не связаны с плагином (за исключением содержимого кодировки пароля в пользовательском классе, вам нужно прокомментировать это). Я пытаюсь понять, действительно ли это проблема с плагином или если это красная селедка. –

+0

Да, это 100% воспроизводимый в любом чистом проекте. Сделайте чистое приложение grails, установите весеннее ядро ​​безопасности, добавьте группу или пользователя в загрузочный блок, убедитесь, что вы вызываете save() для этого пользователя/группы, чтобы сохранить его, а затем попробуйте grails prod runWar. Или возьмите на себя войну Grails и выполните развертывание на сервере приложений. Все еще бывает – Quad64Bit

+1

Извините, я имею в виду, что он не работает без установленного плагина.Я не вижу, как плагин каким-либо образом повлияет на GORM. –

ответ

1

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

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

1

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

Действительно ли Config.groovy настроен правильно?

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

Да, все по умолчанию, и, как я уже сказал, он работает с простым grails runApp, это Grails prod run-war, который не работает – Quad64Bit

Смежные вопросы