Я новичок в калитке и только недавно начал использовать ее для нового веб-приложения для одного из наших проектов. Сегодня я столкнулся с похожей проблемой, описанной в WICKET-4785, ClassNotFoundException во время десериализация страницы. На мой взгляд, интересная часть этого заключается в том, что упомянутый отсутствующий класс отсутствовал по уважительной причине: я просто провел небольшой рефакторинг и переименовал класс, повторно развернул и перезапустил свой Tomcat. Для меня это выглядит как обычный вариант использования, но я не подумал об этом, когда читал документы, потому что.
Мое развертывание очень простое: я проверяю рабочую копию SVN с предварительно настроенным тегом, содержащим все приложение, один раз, а затем просто нужно объединить/обновить и остановить/запустить веб-сервер/приложение.
Как развертывание должно работать в Wicket после рефакторинга или иного изменения моих классов в отношении кэшированных и сериализованных страниц? Есть ли что-нибудь, что мне нужно сказать калитке, чтобы очищать свои кеши при каждом развертывании или игнорировать их или что-то еще? Должен ли я не удалять однажды развернутые классы в течение достаточного периода времени? Это был бы небольшой кошмар... Или есть еще какие-то проблемы, с которыми я столкнулся, которых мне следовало избегать?
Очевидно, что другие также развертывают свои приложения Wicket, поэтому я надеюсь, что у вас есть какие-то советы о том, как избежать проблемы, с которой я столкнулся. Спасибо!
Важные части трассировки стека:
java.lang.ClassNotFoundException: de.am_soft.util.frontend.wicket.markup.link.LogoutLink
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.apache.wicket.application.AbstractClassResolver.resolveClass(AbstractClassResolver.java:108)
at org.apache.wicket.serialize.java.JavaSerializer$ClassResolverObjectInputStream.resolveClass(JavaSerializer.java:218)
at java.io.ObjectInputStream.[...]
at org.apache.wicket.serialize.java.JavaSerializer.deserialize(JavaSerializer.java:122)
at org.apache.wicket.pageStore.DefaultPageStore.deserializePage(DefaultPageStore.java:396)
at org.apache.wicket.pageStore.DefaultPageStore.getPage(DefaultPageStore.java:135)
at org.apache.wicket.page.PageStoreManager$SessionEntry.getPage(PageStoreManager.java:203)
at org.apache.wicket.page.PageStoreManager$PersistentRequestAdapter.getPage(PageStoreManager.java:360)
at org.apache.wicket.page.AbstractPageManager.getPage(AbstractPageManager.java:107)
Я отправил этот вопрос на Список пользователей Wicket также, но пока не получил особого ответа, хотя я думал, что это простой вопрос...