Bonjour,
J'utilise HttpSession et je veux connaitre la taille d'une session. comment faire ? C'est possible de voir l'info comment ?
Version imprimable
Bonjour,
J'utilise HttpSession et je veux connaitre la taille d'une session. comment faire ? C'est possible de voir l'info comment ?
Hello !
Qu'est-ce que tu entends par "la taille d'une session" ?
Le nombre d'objets qui ont été mappés sur la session ?
la taille des attributs de l'objet HttpSession
Je viens de faire ceci mais je ne sais pas si ça va me donner exactement la taille de ma session :?
Pensez vous que c'est bon ????????????????,Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 public int getSessionSize(HttpServletRequest request) throws IOException { Vector sessObjects = new Vector(); HttpSession sess = request.getSession(true); Enumeration eSess = sess.getAttributeNames(); while (eSess.hasMoreElements()) { sessObjects.addElement((Object)eSess.nextElement()); } sessObjects.trimToSize(); try { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); Enumeration eSessObjects = sessObjects.elements(); while (eSessObjects.hasMoreElements()) { objectOutputStream.writeObject((Object)eSessObjects.nextElement()); } return byteArrayOutputStream.toByteArray().length; } catch (IOException ioe) { return -1; } }
Si tous tes objets sont serializable ça peut le faire.
Maintenant tu peux très bien avoir certains de tes objets en session qui pointent sur d'autres objets qui eux sont communs à l'ensemble des sessions, ... la somme de tes tailles en session sera donc supérieure à la taille réelle utilisée...
Après ça va dépasser mes capacités.
Sinon j'ai trouvé ça sur le net :
http://www.servletsuite.com/servlets/ssizetag.htm
Avec un petit décompilateur tu pourras certainement retrouver ce qui a été réalisé.
Bon courage !