Como invalidar a session selecionada programaticamente?

Eu estou tentando invalidar session selecionada (com determinado sessionId) do meu aplicativo da web em execução no Jboss 4.2. Tudo funciona perfeitamente no console JMX, mas não sei como fazer o mesmo no código java. Aqui está o que eu já criei:

MBeanServer server=MBeanServerLocator.locateJBoss(); ObjectName objectName = new ObjectName("jboss.web:host=localhost,path=/,type=Manager"); ManagerBase manager = (ManagerBase)MBeanServerInvocationHandler.newProxyInstance(server, objectName, Manager.class, false); manager.expireSession("sessionID"); 

Mas esse código dá essa exceção:

 Caused by: java.lang.ClassCastException: com.sun.proxy.$Proxy574 cannot be cast to org.apache.catalina.session.ManagerBase 

Pode me ajudar?

Você tem que coletar a session em um link de verificação do mapa seguinte:

  • Como posso carregar o Java HttpSession de JSESSIONID?
  • Encontre o número de sessões ativas criadas a partir de um determinado IP do cliente
  • Como implementar facilmente “quem está online” no Grails ou no aplicativo Java?

Se você ainda está procurando a resposta. Esse trecho funciona para mim:

  MBeanServer server = java.lang.management.ManagementFactory.getPlatformMBeanServer(); ObjectName objectName=new ObjectName("jboss.web:type=Manager,path=/test,host=default-host"); // declare signature of the parameter String[] sig = { "java.lang.String"}; // your session id eg A7rOCAlFa+9uCeUfYNjJpd3r.undefined Object[] opArgs1 = { sessionID }; // call the method String value = (String) server.invoke(objectName, "expireSession", opArgs1, sig); 

Eu estou trabalhando no JBoss-7.1.1.Final. Meu aplicativo é chamado de “teste”, daí a raiz de contexto “/ teste”. Você deve criar objectName com o nome do seu aplicativo.