org.eclipse.jetty.server.Server#getChildHandlersByClass ( )源码实例Demo

下面列出了org.eclipse.jetty.server.Server#getChildHandlersByClass ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

private void invalidateAllSession(HttpSession preferredSession, HttpSession localSession) {
    Server server = ((Session)preferredSession).getSessionHandler().getServer();
    final Handler[] handlers = server.getChildHandlersByClass(SessionHandler.class);
    List<String> invalidatedSessions = new ArrayList<>();
    if (handlers!=null) {
        for (Handler h: handlers) {
            Session session = ((SessionHandler)h).getSession(preferredSession.getId());
            if (session!=null) {
                invalidatedSessions.add(session.getId());
                session.invalidate();
            }
        }
    }
    if(!invalidatedSessions.contains(localSession.getId())){
        localSession.invalidate();
    }
}
 
源代码2 项目: joinfaces   文件: JettyAutoConfigurationIT.java
@Test
public void customize() {
	JettyServletWebServerFactory factory = new JettyServletWebServerFactory();

	this.jettyAutoConfiguration.jsfJettyFactoryCustomizer().customize(factory);

	Server server = ((JettyWebServer) factory.getWebServer()).getServer();

	Handler[] childHandlersByClass = server.getChildHandlersByClass(WebAppContext.class);
	WebAppContext webAppContext = (WebAppContext) childHandlersByClass[0];

	assertThat(webAppContext.getBaseResource().getResource("testJetty.txt").exists())
		.isTrue();
}
 
protected Handler[] getSessionHandlers() {
    Server srv = getServer();
    Handler[] handlers = null;
    if (srv!=null) {
        handlers = srv.getChildHandlersByClass(SessionHandler.class);
    }
    return handlers;
}
 
private SessionHandler getPreferredJettyHandler(Session localSession, boolean allowHandlerThatDoesntHaveSession, boolean markAndReturnThisIfNoneFound) {
    SessionHandler localHandler = ((Session)localSession).getSessionHandler();
    Server server = localHandler.getServer();
    // NB: this can also be useful: ((DefaultSessionIdManager)localHandler.getSessionIdManager())
    
    if (server!=null) {
        Session sessionAtServerGlobalPreferredHandler = null;
        
        // does the server have a globally preferred handler
        SessionHandler preferredServerGlobalSessionHandler = getServerGlobalPreferredHandler(server);
        if (preferredServerGlobalSessionHandler!=null) {
            sessionAtServerGlobalPreferredHandler = preferredServerGlobalSessionHandler.getSession(localSession.getId());
            if (sessionAtServerGlobalPreferredHandler!=null && Boolean.TRUE.equals( sessionAtServerGlobalPreferredHandler.getAttribute(KEY_IS_PREFERRED)) ) {
                return preferredServerGlobalSessionHandler;
            }
        }

        Handler[] handlers = server.getChildHandlersByClass(SessionHandler.class);

        // if there is a session marked, use it, unless the server has a preferred session handler and it has an equivalent session
        // this way if a session is marked (from use in a context where we don't have a web request) it will be used
        SessionHandler preferredHandlerForMarkedSession = findPeerSessionMarkedPreferred(localSession.getId(), handlers);
        if (preferredHandlerForMarkedSession!=null) return preferredHandlerForMarkedSession;

        // nothing marked as preferred; if server global handler has a session, mark it as preferred
        // this way it will get found quickly on subsequent requests
        if (sessionAtServerGlobalPreferredHandler!=null) {
            sessionAtServerGlobalPreferredHandler.setAttribute(KEY_IS_PREFERRED, true);
            return preferredServerGlobalSessionHandler;
        }

        if (allowHandlerThatDoesntHaveSession && preferredServerGlobalSessionHandler!=null) {
            return preferredServerGlobalSessionHandler;
        }
        if (preferredServerGlobalSessionHandler==null) {
            preferredServerGlobalSessionHandler = findPreferredBundleHandler(localSession, server, handlers);
            if (preferredServerGlobalSessionHandler!=null) {
                // recurse
                return getPreferredJettyHandler(localSession, allowHandlerThatDoesntHaveSession, markAndReturnThisIfNoneFound);
            }
        }

        if (markAndReturnThisIfNoneFound) {
            // nothing detected as preferred ... let's mark this session as the preferred one
            markSessionAsPreferred(localSession, " (this is the handler that the request came in on)");
            return localHandler;
        }

    } else {
        log.warn("Could not find server for "+info(localSession));
    }
    return null;
}