java - wicket 是否执行 session 序列化?

标签 java session servlets serialization wicket

假设有一个从 org.apache.wicket.authroles.authentication.AuthenticatedWebSession 扩展而来的自定义 session 类。从技术上讲,AuthenticatedWebSession 实现了 Serializable 接口(interface)。

但这是否意味着 wicket 实际上执行 session 序列化(可能在磁盘中)?或者,当 Servlet 容器没有太多内存时,它有责任进行此类 session 序列化?

最佳答案

Wicket 仅序列化页面及其组件。它不会序列化 session !

以下是有关 Wicket 的一些易于理解的事实:

  • 几乎所有 Wicket 类都是可序列化的。
  • Wicket 允许集群,因此需要可序列化的 session (在这种情况下,可以使用 servlet 容器共享,例如 Tomcat 集群中的 Tomcat 共享 session )。
  • 只要需要存储有状态页面,Wicket 就会绑定(bind) Servlet session 。
  • 默认情况下,Wicket 使用基于用于页面的标准 Java 序列化的序列化程序。 WicketStuff 项目中有基于 Kryo 和 Fast-Serialize 的序列化器
  • Wicket 使用 SessionStore,它是一个特殊的对象,负责将 Wicket 的 Session 存储到 http session 或从 http session 恢复。默认实现是 HttpSessionStore,但您可以实现自己的(实现 ISessionStore 接口(interface)并将其添加到 Application 单例中)。
  • 有状态 Wicket 组件可以在单个请求中保留下来,因此可以很好地将它们序列化并存储在某个位置(在磁盘上或通过网络在服务器之间共享)。

关于java - wicket 是否执行 session 序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33330280/

相关文章:

java - Spring Boot : Default serialization for java. time.Duration 从 String 更改为 Number

java - 如何拦截 session 结束并获取属性?

python - Django session : changing session key when modified

java - httpservletrequest - 创建新 session /更改 session ID

java - 如何从eclipse调用servlet中的destroy()?

java - 从属 jar 不会部署到 tomcat,其中带有此 jar 的项目在工作区中打开

java - C 中的 System.nanoTime() 等价物

java - 比较器参数

PHP $_SESSION 问题

java - 将包添加到 Tomcat 服务器