Как узнать, какие открытые заседания мое основанное на сервлете приложение обрабатывает в любой данный момент

Я должен записать сервлет, который при вызове получает информацию о списке в настоящее время открываемых сессий.

Существует ли способ сделать это?

5
задан BalusC 7 February 2016 в 09:39
поделиться

2 ответа

Реализуют HTTPSISELISTENER , дайте ему Свойство [httpsession> , добавьте сеанс к нему во время SESSESSCREATED () метод, удалите сеанс от него во время метода sessionDestroyed () , зарегистрировать слушателя как <слушателя> в web.xml . Теперь у вас есть класс, который имеет все открытые сеансы в текущем экземпляре jboss. Вот основной пример:

public HttpSessionCollector implements HttpSessionListener {
    private static final Set<HttpSession> sessions = ConcurrentHashMap.newKeySet();

    public void sessionCreated(HttpSessionEvent event) {
        sessions.add(event.getSession());
    }

    public void sessionDestroyed(HttpSessionEvent event) {
        sessions.remove(event.getSession());
    }

    public static Set<HttpSession> getSessions() {
        return sessions;
    }
}

, а затем в вашем сервете, просто делайте:

Set<HttpSession> sessions = HttpSessionCollector.getSessions();

, если вы скорее хотите хранить / получить его в области приложений, чтобы вы могли сделать SET нестатическим , затем пусть HTTPSILDCOLLECTOR также реализует ServletContextListener также и добавить в основном следующие методы:

public void contextCreated(ServletContextEvent event) {
    event.getServletContext().setAttribute("HttpSessionCollector.instance", this);
}

public static HttpSessionCollector getCurrentInstance(ServletContext context) {
    return (HttpSessionCollector) context.getAttribute("HttpSessionCollector.instance");
}

, которые вы можете использовать в сервлете следующим образом:

HttpSessionCollector collector = HttpSessionCollector.getCurrentInstance(getServletContext());
Set<HttpSession> sessions = collector.getSessions();
7
ответ дан 13 December 2019 в 22:07
поделиться

Возможно, использование бобов JMX более элегантно и не нуждается в коде. Просто прочитайте значение

данных: jboss.web: type = manager, path = / myApplication, host = localhost "Activesessionsessions

3
ответ дан 13 December 2019 в 22:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: