begin process at 2010 02 09 20:17:43
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > TAILLE D'UNE SESSION

TAILLE D'UNE SESSION


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :j2ee, jsp, session, taille Niveau :Débutant Date de création :20/06/2005 Vu :7 980

Auteur : Hecco

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Donne la taille d'une session, ceci est à utiliser dans le cas de debugage ou de problèmes connexes avec les sessions J2EE.

Source

  • <%@ page contentType = "text/html;"
  • import="java.sql.* , java.util.*, java.util.Date, java.io.*, java.net.*, java.lang.*" %>
  • <%
  • if(request.getParameter("purge_session") != null){
  • session.invalidate();
  • request.getSession(true);
  • }
  • %>
  • <%!
  • public static int computeObjectSize(Object o){
  • ByteArrayOutputStream baOS;
  • ObjectOutputStream objOS;
  • int size=0;
  • try {
  • baOS = new ByteArrayOutputStream();
  • objOS = new ObjectOutputStream(baOS);
  • objOS.writeObject(o);
  • baOS.close();
  • objOS.close();
  • size = baOS.size();
  • } catch (IOException e) {
  • } finally{
  • baOS=null;
  • objOS=null;
  • }
  • return size;
  • }
  • %>
  • <html>
  • <head>
  • <link href="cewolf.css" rel="stylesheet" type="text/css">
  • <script language="JavaScript" type="text/javascript">
  • function verif(){
  • if(confirm('Voulez invalidée la session ?')){
  • document.form[0].submit();
  • }
  • }
  • </script>
  • </head>
  • <BODY bgcolor="#DDE8F2">
  • <H1>Session content</H1>
  • <p>
  • <table border=1>
  • <TR>
  • <td>
  • Variable de Session
  • </td>
  • <td align="center">
  • Valeurs
  • </td>
  • <td width="30">
  • Size
  • </td>
  • </tr>
  • <%
  • System.gc();
  • float taille=0;
  • Enumeration names = session.getAttributeNames();
  • while(names.hasMoreElements()){
  • String name = (String)names.nextElement();
  • %>
  • <TR>
  • <TD>
  • <% out.write(name); %>
  • </TD>
  • <TD>
  • <% out.println(session.getAttribute(name)); %>
  • </TD>
  • <TD>
  • <%
  • taille=taille+computeObjectSize(name);
  • if(computeObjectSize(name)>1024){
  • out.println(computeObjectSize(name)/1024+" ko");
  • }
  • else {
  • out.println(computeObjectSize(name)+" o");
  • }
  • %>
  • </TD>
  • </TR>
  • <%
  • }
  • %>
  • </TABLE>
  • <table>
  • <tr>
  • <td>Taille du cache :</td>
  • <td><%
  • if(taille>1024){
  • out.println(taille/1024+" ko");
  • }
  • else
  • {
  • out.println(taille+" o");
  • }
  • %> </td>
  • </tr>
  • </table>
  • <FORM>
  • <INPUT TYPE="submit" VALUE="Reload">
  • <INPUT TYPE="button" onclick="verif()" VALUE="Purge Session" NAME="purge_session">
  • </FORM>
  • </body>
  • </html>
<%@ page contentType = "text/html;" 
import="java.sql.* , java.util.*, java.util.Date, java.io.*, java.net.*, java.lang.*" %>

<%
if(request.getParameter("purge_session") != null){
	session.invalidate();
	request.getSession(true);
}
%>

<%!
public static int computeObjectSize(Object o){
	ByteArrayOutputStream baOS;
	ObjectOutputStream objOS;
	int size=0;
	try {
		baOS = new ByteArrayOutputStream();
		objOS = new ObjectOutputStream(baOS);
		objOS.writeObject(o);
		baOS.close();
		objOS.close();
		size = baOS.size();		
	} catch (IOException e) {
	} finally{
		baOS=null;
		objOS=null;
	}
	return size;
}

%>

<html>
<head>
<link href="cewolf.css" rel="stylesheet" type="text/css">
<script language="JavaScript" type="text/javascript">
function verif(){
	if(confirm('Voulez invalidée la session ?')){
		document.form[0].submit();	
	}
}
</script>

</head>
<BODY bgcolor="#DDE8F2">
<H1>Session content</H1>
<p>
<table border=1>
<TR>
<td>
Variable de Session
</td>
<td align="center">
Valeurs
</td>
<td width="30">
Size
</td>
</tr>
<%
System.gc();
float taille=0;
Enumeration names = session.getAttributeNames();
while(names.hasMoreElements()){
  String name = (String)names.nextElement();
  
%>
<TR>
<TD>
<% out.write(name); %>
</TD>
<TD>
<% out.println(session.getAttribute(name)); %>
</TD>
<TD>
<%
	taille=taille+computeObjectSize(name);
	if(computeObjectSize(name)>1024){
		out.println(computeObjectSize(name)/1024+" ko");
	}
	else {
		out.println(computeObjectSize(name)+" o");
	}
%>
</TD>
</TR>
<%
}
%>
</TABLE>

<table>
<tr>
	<td>Taille du cache :</td>
	<td><%
	if(taille>1024){
	 out.println(taille/1024+" ko");
	}
	else
	{
	 out.println(taille+" o");
	}
	 %> </td>
</tr>
</table>


<FORM>
<INPUT TYPE="submit" VALUE="Reload">
<INPUT TYPE="button" onclick="verif()" VALUE="Purge Session" NAME="purge_session">
</FORM>

 
</body>
</html>



 Sources de la même categorie

Source avec Zip CLASS DEMINEUR par Niidhogg
AJOUTER LE MAIL À LA LISTE DE CONTACT HOTMAIL POUR EVOLUTION... par sarathai
Source avec Zip ENVOI MAIL AVEC JAVA par mdahmoune
Source avec Zip Source avec une capture JADE PAR LA PRATIQUE par mdahmoune
CHUNKEDXML, LIRE DU XML PAR MORCEAU par AlexN

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture APPLICATION WEB POUR LA GESTION D'UNE AGENCE DE LOCATION DE ... par rachid1449
Source avec Zip JAVA SERVER PAGE par pasteure
Source avec Zip PAGES JSP / JEU DU NOMBRE SECRET par chatmar
Source avec Zip Source avec une capture STRUTS AVEC HIBERNAT (SOUS MYSQL) par khsam2001
Source avec Zip UPLOAD FICHIER AVEC JSP par kokokaoutar

Commentaires et avis

Commentaire de jmanson le 12/06/2006 12:04:58

Salut !

J'ai une remarque : je ne suis pas sûr que tu prennes en compte tous les objets de la session !
ta variable "names" contient la liste des identifiants des objets en session.
ensuite tu récupère chaque identifiant dans la variable "name".
"name" est donc une chaine de caractères, envoyée en paramètre à la fonction "computeObjectSize". Tu calcules donc la taille des identifiants !
Me trompe-je ?

perso, j'aurais mis "computeObjectSize(session.getAttribute(name))"
problème : ta fonction computeObjectSize est uniquement OK pour les objets sérialisables. renvoie 0 sinon.

Any comment ?

Jerome

Commentaire de hebenky le 09/10/2006 14:41:34

Bonjours à tous,
deux commentaires :

- Effectivement Jérôme, la fonction computeObjectSize appelée comme dans le scriptlet initiale calcul la taille des identifiants. La correction que tu proposes est correcte.

- Le fait que cette fonction ne détermine la taille des objets que ssi ils sont sérialisables n'est pas une aberration. Bien au contraire, j'irais plus loin et je dirais que si je tombe sur un objet non sérialisable alors j'indique au développeur une erreur. Cette petite "astuce" permet d'assurer une compatibilité de l'application web sur des systèmes de clustering qui souvent réclament que le contenu d'une session soit sérialisable pour être partageable.


NB : un objet qui implémente java.io.Serializable n'est pas forcément sérialisable (il faut aussi que l'ensemble des ses propriétées soit sérialisables) . Pour savoir si l'objet est sérialisable, la méthode la plus simple est de sérialiser l'objet et de trapper l'exception java.io.NotSerializableException.


public static int computeObjectSize(Object o){
    ByteArrayOutputStream baOS;
    ObjectOutputStream objOS;
    int size=0;
    try {
        baOS = new ByteArrayOutputStream();
        objOS = new ObjectOutputStream(baOS);
        objOS.writeObject(o);
        baOS.close();
        objOS.close();
        size = baOS.size();        
    }
catch (IOException e) {
    } finally{
        baOS=null;
        objOS=null;
    }
    return size;
}


Bon courage
ben

Commentaire de mangoo8 le 12/11/2006 20:03:21

j'arrive pas a résoudre une servlet qui permet d'afficher le nombre de visites d'une page pendant une session de navigation

Commentaire de hebenky le 13/11/2006 10:05:39

Cette question n'a à priori rien a faire ici.
Sinon pour faire simple : tu ajoutes dans la session un Integer que tu incrémentes à chaques appel de méthode service() de la servlet.

exemple :
service (request, response){
// attention au return null de getSession
  Integer nbPageVisited = request.getSession().getAttribut("nbPageVisited");


  if (nbPageVisited != null){
    request.getSession().setAttribut("nbPageVisited", new Integer(nbPageVisited.intValue() + 1));
  }
  else {
    request.getSession().setAttribut("nbPageVisited", new Integer(1));

}

}

voila, si tu as besoin de faire cela sur plusieurs servlets, il te suffit d'en faire une générique (qui implémentera la méthode précédente) et de de faire en sorte que les autres en héritent.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Session en JSP [ par tahitto ] pouver vous m'aider par un exemple ou un support de cours, pour créer une session dont on donne à chaque utilisateur une ou plusieurs variables persis variable Session jsp [ par tahitto ] comment paramétrer les boutons dans des pages html? variable de session(JSP) [ par nabilblk ] je travail sur un site en JSP. et je veux utiliser les variable de session [au lieu de les porter avec methode get ou post "request.getparameter("nom" [J2EE] [WEBSPHERE] [TAGLIB] - taglib non reconnu [ par hebenky ] Bonjour &#224; tous, je dispose d'une application Web J2EE 1.3 fonctionnant correctement sur WebSphere 5.1. Elle utilise accessoirement STRUTS (1.2..8 [débutant] problème de déploiement j2EE [ par sylvanians ] Bonjour,je cherche à utiliser les jsp mais n'arrive pas à faire fonctionner un exemple. J'utilise jonas avec eclipse. Et j'utilise le plugin Jope. J'a session avec taglib sql [ par reunionnais974 ] Bonjour;Je souhaite me servir de la session comme temps d'inactivit&#233; sur mon site.Je me sert du taglib sql et d&#233;s que la connexion a la base J2ee ,session beans [ par idriss1d ] je suis nouveau dans le programmation avec j2ee et j'aimerais  avoir  un  cours  qui  m'explique  les  notions  de  base  pour les EJB et merci. Framework J2EE [ par domdom73 ] BonjourJ'aimerai savoir si il existe un Framwork pour faire du J2EE en plus specialement pour faire des JSP  (je suis debutant en JSP)Merci @+domdom73 charger un fichier en JSP [ par mati83 ] bon jour, je demande un code JSP qui permet de charger un fichier texte du poste client au poste serveur avec une condition sur la taille du fichier à debutant en j2ee [ par anisj1m ] bonjour tous le monde;je suis debuitant avec l'architecture j2ee, bon j'ai etudier les jsp, servlets et les javabeans et j'ai compris comment faire la


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales