2008-11-11 9 views
4

Une application Wicket sérialise et met en mémoire cache toutes les pages pour prendre en charge les composants avec état, ainsi que pour prendre en charge le bouton de retour, entre autres raisons possibles. J'ai une application qui utilise setResponsePage pour naviguer d'un écran à l'autre. Sur une période assez courte, la session devient plutôt volumineuse car toutes les pages précédentes sont stockées dans la session. Pour la plupart, j'ai seulement besoin de la session pour contenir la page actuelle, pour des raisons évidentes, et peut-être les 2 ou 3 dernières pages pour permettre une navigation facile en utilisant le bouton de retour du navigateur. Puis-je forcer une page à expirer après que je m'en suis éloignée et que je ne souhaite pas utiliser le bouton de retour à cette version de la page? Plus généralement, quelle est la méthode recommandée pour gérer la croissance de la session dans Wicket?Portillon, pile de pages et utilisation de la mémoire

Répondre

7

http://apache-wicket.1842946.n4.nabble.com/Wicket-Session-grows-too-big-real-fast-td1875816.html

Si vous utilisez des charges d'objets de domaine sur votre page, qui sont éventuellement à d'autres étroitement couplés objets de domaine, assurez-vous d'éviter sérialisation pour ces!

Jetez un oeil à LoadableDetachableModel pour envelopper des objets domaing DataView et IDataProvider pour afficher la liste des objets domaine

Tu objets non domaine des choses dans les variables d'instance de composants. Vous ne définirez pas les références d'objet de domaine final afin de les utiliser dans les sous-classes anonymes. Vous ne passerez pas une simple liste d'objets de domaine à un ListView.

Peut-être, quand le sous-classement WbeRequestCycle dans votre classe d'application, vous pouvez prendre le contrôle de la durée de vie d'une page dans le pagemap ... ne l'ont pas essayé, mais

+2

Le lien ne fonctionne plus: / – krtek

1

Afin d'éviter étrangleur session en raison d'empilement continu de byte-stream dû à la sérialisation dans une session et empilement de mémoire, vous pouvez utiliser des modèles détachables en utilisant des hooks pour organiser leur propre stockage et restauration au début de chaque cycle de requête, de cette façon vous avez un contrôle complet sur les modèles contenant byte-stream des pages non requises dans la session ou navigables via le bouton 'Retour'.

Questions connexes