By default, a non-serializable implementation is used to represent a session (org.zkoss.zk.ui.Session). The benefit of using non-serializable implementation is that application developers need to worry whether the value stored in a component, say, Listitem's setValue, is serializable.
However, if you are sure all values stored in components are serializable, you can use a serializable implementation to represent a session.
To configure ZK to use the serializable implementation, you have to configure the ui-factory-class element in WEB-INF/zk.xml, refer to Appendix B in the Developer's Reference for more details.