tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
691
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Masterpurzel
    Masterpurzel Masterpurzel ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Ort
    Vienna, Austria, Austria
    Beiträge
    52
    Hallo,

    habe eine einfache Frage zu der ich leider nichts finden konnte:

    Wie kann man alle aktiven Sessions auslesen mit JSP oder JSF? Brauche das für eine Online-Statistik!

    Danke

    Gruß Masterpurzel
     

  2. #2
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    dazu gibt es AFAIK kein Standard API... man könnte sich natürlich selbst etwas auf Basis eines HttpSessionListener bauen, aber ich denke dies ist in diesem Fall nicht zweckdienlich...

    Welchen Servlet-Container verwendest du denn? in der Regel gibt es dort App-Server spezifische Möglichkeiten die Http-Sessions aufzulisten und auf Session-Attribute zuzugreifen.

    Bei Tomcat kann man die Session Informationen relativ einfach über die internen Management JMX MBeans auslesen.

    Schau mal hier:
    (für das Beispiel habe ich beim start einer Session ein Attribut mit einem generierten "UserName" hinzugefügt)
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    package de.tutorials.web.training;
     
    import java.io.IOException;
     
    public class GetSessionInfoServlet extends HttpServlet{
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
     
            PrintWriter out = resp.getWriter();
            
            try {
                MBeanServer pmbs = ManagementFactory.getPlatformMBeanServer();
                ObjectName on = new ObjectName("Catalina:type=Manager,context=" + req.getContextPath() + ",host=localhost");
                            
                out.println("ActiveSessions: "+ pmbs.getAttribute(on, "activeSessions"));
                
                String[] sessionIds = pmbs.invoke(on, "listSessionIds", new Object[0], new String[0]).toString().split(" ");
                out.println(Arrays.toString(sessionIds)); 
                
                for(String sessionId : sessionIds){
                    out.println("Session: " + sessionId +" UserName: " + pmbs.invoke(on, "getSessionAttribute", new Object[]{sessionId, "UserName"}, new String[]{String.class.getName(),String.class.getName()}));
                }
                
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
     
    }

    Ausgabe:
    Code :
    1
    2
    3
    4
    
    ActiveSessions: 2
    [E4D4EFE02B846271CBB67DB21016AFE7, 0E1072BC82581645210DD1D61520A452]
    Session: E4D4EFE02B846271CBB67DB21016AFE7 UserName: User_1328308664892
    Session: 0E1072BC82581645210DD1D61520A452 UserName: User_1328308652756

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  3. #3
    Avatar von Masterpurzel
    Masterpurzel Masterpurzel ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Ort
    Vienna, Austria, Austria
    Beiträge
    52
    Danke Thomas für das Beispiel! Ich werde das mal testen, da ich Tomcat benutze!
     

  4. #4
    Avatar von Masterpurzel
    Masterpurzel Masterpurzel ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Ort
    Vienna, Austria, Austria
    Beiträge
    52
    Ich habe da so ein paar Probleme:

    das wichtigste zuerst: lokal funktioniert es, auf meinem entferntem Server nicht mehr, es wird immer nur "0" angezeigt!

    Was kann ich dagegen tun?

    PS: Tomcat zeigt mir auch immer nur "0" an
    Geändert von Masterpurzel (05.02.12 um 19:07 Uhr)
     

  5. #5
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    eventuell musst du hier einen anderen Host als Attribut im ObjectName verwenden:
    Code java:
    1
    2
    3
    
    ...
    ObjectName on = new ObjectName("Catalina:type=Manager,context=" + req.getContextPath() + ",host=localhost"); 
    ...

    Welche Tomcat Version verwendest du denn? Getestet habe ich das mit Tomcat Version 7.0.23

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  6. #6
    Avatar von Masterpurzel
    Masterpurzel Masterpurzel ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Ort
    Vienna, Austria, Austria
    Beiträge
    52
    Zitat Zitat von Thomas Darimont Beitrag anzeigen
    Hallo,

    eventuell musst du hier einen anderen Host als Attribut im ObjectName verwenden:
    Code java:
    1
    2
    3
    
    ...
    ObjectName on = new ObjectName("Catalina:type=Manager,context=" + req.getContextPath() + ",host=localhost"); 
    ...

    Welche Tomcat Version verwendest du denn? Getestet habe ich das mit Tomcat Version 7.0.23

    Gruß Tom
    Ich habe auch die 7er Version, das Attribut hatte ich schon geändert - auf den Wert der in server.xml unter config steht. Ging auch nicht. Was ich noch anmerken muss:

    lokal lade ich es per Webinterface von Tomcat hoch (.war). Online lade ich es per sftp hoch. Kanns daran liegen?


    €dit:
    meine Verzeichnisse sehen so aus:


    .war
    -tomcat
    +-webapps
    -+-pcpowerplay
    --+-...alle daten sind hier drin!

    sftp
    -tomcat
    +-webapps
    -+-pcpowerplay
    --+-ROOT
    ---+-...alle daten sind hier drin!
    Geändert von Masterpurzel (06.02.12 um 13:01 Uhr)
     

Ähnliche Themen

  1. B2B sessions auslesen
    Von D2587 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 22.09.09, 11:46
  2. ICEFACES, JSF, Zugriff auf alle Sessions?
    Von WolfBauer im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 16.01.08, 03:23
  3. Antworten: 10
    Letzter Beitrag: 14.06.06, 09:41
  4. Alle Sessions ermitteln ?!
    Von Grunge im Forum PHP
    Antworten: 15
    Letzter Beitrag: 12.02.06, 13:50
  5. Sessions auslesen
    Von Caralynn im Forum PHP
    Antworten: 4
    Letzter Beitrag: 06.05.04, 16:30

Stichworte