У меня есть приложение Grails 3 (3.1.1), которое реализует систему Breadcrumb. Я основывал его на this plugin для более ранней версии Grails.Grails Session-scoped Service throwing NotSerializable Exception
Он прекрасно работает локально (с помощью Grails Командной строки run-app
), однако, когда я построить и запустить на сервере Tomcat 7, я получаю следующее исключение:
Jul 08, 2016 5:10:34 PM org.apache.catalina.ha.session.DeltaManager requestCompleted
SEVERE: Unable to serialize delta request for sessionid [6605EAC9C04DF7E2512493CABDFB1AD2]
java.io.NotSerializableException: au.packagename.BreadCrumbService
Вышеназванной служба области применения набора для session
и указан как прокси. Я даже добавил реализацию Serializable
, однако это, похоже, не помогает.
class BreadCrumbService implements Serializable {
static transactional = false
static scope = 'session'
static proxy = true
}
У меня есть Interceptor
, который использует службу, чтобы написать текущий контроллер и действие в качестве Crumb
объекта к сессии. Я добавил реализацию Serializable
в Crumb
и BreadCrumbType
Enum (используется в аннотации Controllers), которая записывается в сеанс.
Может ли кто-нибудь указать мне, почему это может произойти (я понимаю концепцию Serializable) и как я могу решить ее?
Вы уверены, что все члены BreadCrumbService являются временными или Serializable? –