Проблема с веб-потоком (ами) в Grails - PullRequest
2 голосов
/ 21 декабря 2010

Я только что столкнулся с довольно странной проблемой при тестировании веб-процессов моих приложений.

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

Итак, чтобы протестировать свое приложение, я вхожу в систему как пользователь мужского пола и вхожу в поток, и все в порядке ... затем либо выйдя из системы, либо войдя как женщина (или входя в систему как пользователь женского пола в другом браузере) Затем я пытаюсь пройти через женский процесс, но я получаю исключение:

Error 500: java.util.Collections$UnmodifiableMap cannot be cast to groovy.lang.Closure
Servlet: grails
URI: /ACUREG/grails/applicant/ma.dispatch
Exception Message: java.util.Collections$UnmodifiableMap cannot be cast to groovy.lang.Closure
Caused by: java.util.Collections$UnmodifiableMap cannot be cast to groovy.lang.Closure
Class: ApplicantController

Теперь это странно, так как обратное также верно, еслиЯ начал сначала как женщина, затем попытался попробовать мужской процесс, такая же проблема возникает, но на этот раз исключение будет указывать на первое событие в мужском коде веб-потока ...

Кто-нибудь знает почемуэто может происходить?Я действительно подумал, что, возможно, это связано с двумя веб-потоками в одном контроллере, но после разделения их на их собственные контроллеры и при этом обнаружении одной и той же проблемы это явно не так.

Спасибо,

Ответы [ 2 ]

1 голос
/ 22 декабря 2010

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

Пока имена классов объектов команд различны, проблем не возникает, но в моем случае первая страница каждого из моих веб-потоков использует один и тот же класс объектов команд и для некоторыхпричина неизвестна, это вызывает исключение.Дублируя этот конкретный объект команды и переименовывая один из них так, чтобы он относился к одному из веб-потоков, проблема исчезает.

Хотелось бы увидеть более полезное исключение и указать, где возникла проблема, иВозможно, я сэкономил день, отследив его.

Короче говоря, если вы используете несколько веб-потоков с объектами команд, будьте осторожны, так как они кажутся как-то «кэшированными» по имени ...

0 голосов
/ 19 января 2011

Проблема заключалась в том, что события нескольких веб-потоков имели одно и то же имя.Когда я переименовал события, чтобы они были разными, проблем больше не было.

...