3

我有一个具有复杂表单的 Web 应用程序:

  1. 执行字段验证,
  2. 将值转换为易于为下一页解析的输入格式(数组)。
  3. 将用户重定向到下一页(数据在 URL 中传递)
  4. 然后下一页加载数据执行计算并显示结果。

这一切都是在 Wicket 中无状态地完成的。我在想我是怎么做到的。感觉不“对”。转换为数组并重定向“工作”,但必须有更好的方法。

更新
为什么表单是无状态的:
有问题的 Web 应用程序与其他 2 个 Web 应用程序共享服务器。OutOfMemoryException部署此应用程序的新版本后,我遇到了s。当我在将表单转换为无状态之前检查 Tomcat 管理器应用程序时,我通常会看到 ~150 或“活动会话”。现在表单/结果页面是无状态的,我看到了 5 个“活动会话”。这大大减少了我的内存使用量。(我认为)。不过,我仍然有一个挥之不去的疑问:https ://stackoverflow.com/questions/16049219/how-to-handle-a-hibernate-bi-directional-mapping-for-a-set-properly

建议:
我开始怀疑是否应该删除“结果”页面安装点并将其转换为面板。这样我就可以直接将我的复杂对象传递给它,并在整个页面刷新中交换面板。这在无状态页面中是否可能?

POST
另外我不相信 wicket 本身支持 POST 重定向: 如何在 wicket 中使用 post 方法

4

1 回答 1

1

你仔细看了OutOfMemoryError吗?通常,在重新部署应用程序时,您会耗尽 permgen 空间,而不是用户内存。Permgen 空间泄漏非常常见且难以消除。可能这与 Wicket 无关,而更多的是与保持加载的类有关。您应该尝试使用 Java 8(没有永久生成)或更新版本的 Tomcat(和 Wicket),因为类加载器泄漏通常在更新版本的框架和容器中得到解决。

另请参阅本文:避免 Apache Tomcat 内存不足错误

于 2014-11-28T13:26:19.610 回答