On 1/6/11 6:07 PM, Ziggy wrote:
> I was looking at the code for the Tomcat Manager application to try and find
> out how it is determining whether a webapp/context is running and how many
> sesions are active. Looking at the code i think it uses these two methods
> 
> Context.getAvailalbe() //check if available
> Context.getManager().findSessions().length // Number of sessions.
> 
> Here is the relevant function
> 
>    protected void list(PrintWriter writer) {
> 
>         if (debug >= 1)
>             log("list: Listing contexts for virtual host '" +
>                 host.getName() + "'");
> 
>         writer.println(sm.getString("managerServlet.listed",
>                                     host.getName()));
>         Container[] contexts = host.findChildren();
>         for (int i = 0; i < contexts.length; i++) {
>             Context context = (Context) contexts[i];
>             String displayPath = context.getPath();
>             if( displayPath.equals("") )
>                 displayPath = "/";
>             if (context != null ) {
>                 if (context.getAvailable()) {
>                     writer.println(sm.getString("managerServlet.listitem",
>                                                 displayPath,
>                                                 "running",
>                                       "" +
> context.getManager().findSessions().length,
>                                                 context.getDocBase()));
>                 } else {
>                     writer.println(sm.getString("managerServlet.listitem",
>                                                 displayPath,
>                                                 "stopped",
>                                                 "0",
>                                                 context.getDocBase()));
>                 }
>             }
>         }
>     }
> 
> I was looking at the above for the above information as i am working on a
> client tool that tries to find out this exact information. The tool i am
> using connects to Tomcat via JMX but i am not sure if i can get the same
> information via JMX. Can i access the Context class? or is there any other
> way (Mbeans?) i can check if a context is running via JMX?

Connect to a Tomcat instance using JConsole and look for the 'Manager'
objects.

 Catalina:type=Manager,path=/app01,host=localhost

There's an attribute 'activeSessions'.


p


Attachment: 0x62590808.asc
Description: application/pgp-keys

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to