Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
498 views
in Technique[技术] by (71.8m points)

tomcat7 - org.apache.catalina.ServerFactory.getServer() equivalent in Tomcat 7

What is the equivalent of org.apache.catalina.ServerFactory.getServer() in Tomcat 7 or what would be the best way to retrieve org.apache.catalina.Session instances ?

Here is a sample code that used to work on 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;
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can look it up via its management registration..

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

Obviously that code is devoid of error checking but is functional.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...