Tomcat 7中与org.apache.catalina.ServerFactory.getServer()相对应的是什么?

19

在Tomcat 7中,与org.apache.catalina.ServerFactory.getServer()相当的方法是什么,或者获取org.apache.catalina.Session实例的最佳方式是什么?

以下是曾经在Tomcat 6.0上工作的示例代码:

public List<org.apache.catalina.Session> findActiveSessions() throws ServiceException {
    StandardEngine engine = (StandardEngine) ServerFactory.getServer().findService("Catalina").getContainer();
    StandardContext  context = (StandardContext) engine.findChild(engine.getDefaultHost())
        .findChild(ServletActionContext.getServletContext().getContextPath()); 
    List<org.apache.catalina.Session> list = new ArrayList<org.apache.catalina.Session>();
    for (org.apache.catalina.Session session : context.getManager().findSessions()) {
        list.add(session);
    }
    return list;
}
1个回答

19

您可以通过其管理注册信息查找它。

import javax.management.*;
import org.apache.catalina.Server;

MBeanServer mBeanServer = MBeanServerFactory.findMBeanServer(null).get(0);
ObjectName name = new ObjectName("Catalina", "type", "Server");
Server server = (Server) mBeanServer.getAttribute(name, "managedResource");

显然,那段代码缺乏错误检查,但是功能正常。


4
对于嵌入式Tomcat 7,它将是:new ObjectName("Tomcat", "type", "Server"); - Adam Rabung
我直接使用了“端口”这个词,因为路径上没有服务器(也不想要)。 - Karl Kildén

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接