2009-07-10 8 views
6

Sto provando a utilizzare l'API JMX per ottenere i conteggi delle sessioni attivi per un'applicazione Web.Ottenere sessione attiva conta con l'API JMX (Java Management Extensions)

  1. È possibile utilizzare l'API JMX per ottenere questo tipo di informazioni?
  2. Se sì, quanto sarebbe affidabile?
  3. Qualsiasi codice di esempio su come ottenere questo risultato?

Ho letto il tutorial e la documentazione di JMX, ma mi stanno dando una panoramica di cosa sia la tecnologia. Non riesco proprio a individuare ciò di cui ho bisogno, ancora.

risposta

5

È possibile eseguire questa operazione utilizzando qualcosa come JConsole o JVisualVM dopo aver configurato il server dell'app per esporre una porta JMX. Non menzioni il server dell'app che stai utilizzando ma per Tomcat, è descritto qui: http://tomcat.apache.org/tomcat-5.5-doc/monitoring.html. Una volta stabilita la connessione con JConsole, Tomcat espone un MBean con informazioni sulla sessione, ma di nuovo dipende dal contenitore che si utilizza.

+1

la questione è aggiunto "JBoss", quindi è Tomcat, ma il sapore jboss di esso. Probabilmente non avrà lo standard Tomcat JMX layer. – skaffman

2

Per tenere traccia delle sessioni è possibile utilizzare uno HttpSessionListener. Se si desidera esporre le sessioni attive tramite JMX, è possibile registrare un mbean e chiamarlo da altre applicazioni (consultare la documentazione di JMX).

1

JBoss espone già il conteggio sessione attivo tramite JMX, ma solo attraverso l'intero server, non per webapp. Se si utilizza solo una webapp, allora dovrebbe essere OK per te.

Passare alla console JMX sulla porta 8080 e cercare la voce host=localhost,path=/,type=Manager. Al suo interno troverai una voce per il conteggio delle sessioni attive.

0

La risposta data da skaffman è molto utile, ma vorrei modifica che JBoss è in grado di darvi le sessioni al webapp, cercando di:

host = localhost, path =/your_webapp_context, type = Responsabile

(sostituire your_webapp_context con il contesto della webapp che ti interessa ...)

3
ObjectName name = new ObjectName("Catalina:type=Manager,path=/NAME_OF_APP,host=localhost"); 
ManagementFactory.getPlatformMBeanServer().getAttribute(name, "activeSessions"); 
+2

Hm, su Tomcat 7 che non funziona. Ma 'Catalina: type = Manager, context =/NAME_OF_APP, host = localhost' – knalli