我是 wicket 的新手,最近才开始将它用于我们的一个项目的新网络应用程序。今天,我遇到了类似WICKET-4785中描述的问题,即页面反序列化期间的 ClassNotFoundException。在我看来,有趣的部分是,缺少提到的类是有充分理由的:我只是稍微重构了一下并重命名了类,重新部署并重新启动了我的 Tomcat。这对我来说看起来像是一个正常的用例,但是当我通读文档时我没有想到这是因为。
我的部署非常简单:我检查了一个包含整个应用程序的预配置标签的 SVN 工作副本,然后只需要合并/更新和停止/启动 Web 服务器/应用程序。
在我重构或以其他方式更改有关缓存和序列化页面的类之后,部署应该如何在 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 用户列表上发布了这个问题,但还没有得到太多回应,虽然我认为这是一个简单的问题......