ServerInfos.java :  » Groupware » LibreSource » org » libresource » web » servlets » Java Open Source

Java Open Source » Groupware » LibreSource 
LibreSource » org » libresource » web » servlets » ServerInfos.java
/**
 * LibreSource
 * Copyright (C) 2004-2008 Artenum SARL / INRIA
 * http://www.libresource.org - contact@artenum.com
 *
 * This file is part of the LibreSource software, 
 * which can be used and distributed under license conditions.
 * The license conditions are provided in the LICENSE.TXT file 
 * at the root path of the packaging that enclose this file. 
 * More information can be found at 
 * - http://dev.libresource.org/home/license
 *
 * Initial authors :
 *
 * Guillaume Bort / INRIA
 * Francois Charoy / Universite Nancy 2
 * Julien Forest / Artenum
 * Claude Godart / Universite Henry Poincare
 * Florent Jouille / INRIA
 * Sebastien Jourdain / INRIA / Artenum
 * Yves Lerumeur / Artenum
 * Pascal Molli / Universite Henry Poincare
 * Gerald Oster / INRIA
 * Mariarosa Penzi / Artenum
 * Gerard Sookahet / Artenum
 * Raphael Tani / INRIA
 *
 * Contributors :
 *
 * Stephane Bagnier / Artenum
 * Amadou Dia / Artenum-IUP Blois
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 */
package org.libresource.web.servlets;

import org.libresource.Libresource;

import org.libresource.core.CoreConstants;
import org.libresource.core.interfaces.LibresourceCoreService;

import org.libresource.kernel.KernelConstants;
import org.libresource.kernel.interfaces.KernelService;

import org.libresource.membership.MembershipConstants;
import org.libresource.membership.interfaces.MembershipService;

import org.libresource.web.config.Config;

import java.util.List;
import java.util.StringTokenizer;
import java.util.Vector;

import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class ServerInfos extends BaseServlet {
    protected void process(HttpServletRequest request, HttpServletResponse response)
        throws Exception {
        KernelService kernelService = (KernelService) Libresource.getService(KernelConstants.SERVICE);
        LibresourceCoreService libresourceCoreService = (LibresourceCoreService) Libresource.getService(CoreConstants.SERVICE);
        MembershipService membershipService = (MembershipService) Libresource.getService(MembershipConstants.SERVICE);

        // ls infos
        request.setAttribute("lsVersion", kernelService.getLibresourceVersion());

        //  projects
        request.setAttribute("nbProjects", String.valueOf(libresourceCoreService.listAllProjects().length));
        request.setAttribute("nbPublicProjects", String.valueOf(libresourceCoreService.listPublicProjects().length));

        //  users
        request.setAttribute("nbUsers", String.valueOf(membershipService.listUsers().size()));

        //  sessions
        int connectedUsers = 0;
        Vector users = new Vector();
        int guestUsers = 0;
        String managerName = "jonas:type=Manager,path=/,host=localhost";
        ObjectName on = new ObjectName(managerName);
        List mbeanServers = MBeanServerFactory.findMBeanServer(null);

        if ((mbeanServers != null) && (mbeanServers.size() > 0)) {
            MBeanServer mbeanServer = (MBeanServer) mbeanServers.get(0);
            String sessions = (String) mbeanServer.invoke(on, "listSessionIds", null, null);
            StringTokenizer st = new StringTokenizer(sessions, " ");

            while (st.hasMoreTokens()) {
                String token = st.nextToken();
                Object[] params = { token, "security_username" };
                String[] sign = { "java.lang.String", "java.lang.String" };

                try {
                    String user = (String) mbeanServer.invoke(on, "getSessionAttribute", params, sign);

                    if (user != null) {
                        if (!users.contains(user)) {
                            connectedUsers++;
                            users.add(user);
                        }
                    } else {
                        guestUsers++;
                    }
                } catch (Exception e) {
                    // TODO: handle exception
                }
            }
        }

        request.setAttribute("connectedUsers", new Integer(connectedUsers));
        request.setAttribute("connectedUsersList", users);
        request.setAttribute("guestUsers", new Integer(guestUsers));

        // technicals infos
        //  application server (ejb is made in jsp code)
        request.setAttribute("webServerInfos", Config.getInstance(null).getServletContext().getServerInfo());

        //  os infos
        Vector infos = new Vector();
        Object[] property = new Object[2];
        property[0] = "os.name";
        property[1] = System.getProperty("os.name");
        infos.add(property);
        property = new Object[2];
        property[0] = "os.version";
        property[1] = System.getProperty("os.version");
        infos.add(property);
        request.setAttribute("osInfos", infos);

        //  java infos
        infos = new Vector();
        property = new Object[2];
        property[0] = "java.runtime.name";
        property[1] = System.getProperty("java.runtime.name");
        infos.add(property);
        property = new Object[2];
        property[0] = "java.vm.version";
        property[1] = System.getProperty("java.vm.version");
        infos.add(property);
        property = new Object[2];
        property[0] = "java.vm.vendor";
        property[1] = "<a href=\"" + System.getProperty("java.vendor.url") + "\">" + System.getProperty("java.vm.vendor") + "</a>";
        infos.add(property);
        property = new Object[2];
        property[0] = "java.version";
        property[1] = System.getProperty("java.version");
        infos.add(property);
        request.setAttribute("javaInfos", infos);

        request.getRequestDispatcher("/pages/serverInfos.jsp").forward(request, response);
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.