0

我正在尝试使在 Jboss 4.2 上运行的 Web 应用程序中的选定会话(具有给定的 sessionId)无效。从 JMX 控制台一切正常,但我不知道如何在 java 代码中做同样的事情。这是我已经创建的:

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");

但是这段代码给出了这个例外:

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

你能帮助我吗?

4

2 回答 2

0

您必须在以下链接的地图检查中收集会话:

于 2013-07-18T13:09:39.917 回答
0

如果你还在寻找答案。该片段对我有用:

        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 e.g. A7rOCAlFa+9uCeUfYNjJpd3r.undefined
        Object[] opArgs1 = { sessionID };
        // call the method
        String value = (String) server.invoke(objectName, "expireSession",
                opArgs1, sig);

我正在研究 JBoss-7.1.1.Final。我的应用程序被称为“test”,因此上下文根为“/test”。您应该使用应用程序的名称创建 objectName。

于 2013-08-27T13:18:37.803 回答