如何以编程方式使所选会话无效?

时间:2013-07-18 12:52:38

标签: java session jboss jboss-4.2.x

我正在尝试使用在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
你能帮助我吗?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分: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。