Попробуйте обратиться к этому ТАКому вопросу , читая ваш код, первое, что я думаю, это попытаться использовать JMX (Java Management eXtension)
Примерно так:
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi");
try(JMXConnector jmxc = JMXConnectorFactory.connect(url)) {
MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
ObjectName mbeanName = new ObjectName("Catalina:type=Manager,context=/,host=localhost");
Object value = mbsc.getAttribute(mbeanName, "activeSessions");
}
EDIT
Если вам нужно получить номер сеанса локально ваш код должен быть в порядке, попробуйте с вашим кодом, но получите контекст во время выполнения.
Переопределите метод init:
@Override
public void init(final ServletConfig config) throws ServletException {
context = config.getServletContext().getContextPath();
}
Затем передайте его как параметр ObjectName:
ObjectName objectName = new ObjectName("Catalina:type=Manager,context="+context+",host=localhost");