Thứ Năm, 5 tháng 12, 2013

session listener embedded jetty example

package httpservice;

import javax.servlet.Filter;
import org.apache.log4j.Logger;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.SessionManager;
import org.eclipse.jetty.server.handler.HandlerList;
import org.eclipse.jetty.server.handler.ResourceHandler;
import org.eclipse.jetty.server.session.HashSessionIdManager;
import org.eclipse.jetty.server.session.HashSessionManager;
import org.eclipse.jetty.server.session.SessionHandler;
import org.eclipse.jetty.servlet.FilterHolder;
import org.eclipse.jetty.servlet.FilterMapping;
//import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHandler;
import org.eclipse.jetty.servlets.GzipFilter;
import weblistener.HttpSessionListener;

public class WebServer {

    private static Logger logger = Logger.getLogger(WebServer.class);

    public void start() throws Exception {

        Server server = new Server(Integer.parseInt(System.getProperty("zport")));

        ServletHandler handler = new ServletHandler();
        server.setHandler(handler);
        HashSessionIdManager hashSessionIdManager = new HashSessionIdManager();
        SessionHandler sessionHandler = new SessionHandler();
        SessionManager sessionManager = new HashSessionManager();
        sessionManager.setSessionIdManager(hashSessionIdManager);
        sessionHandler.setSessionManager(sessionManager);
     
        sessionHandler.addEventListener(new HttpSessionListener());

        sessionHandler.setHandler(handler);
        sessionHandler.setServer(server);
        server.setSessionIdManager(hashSessionIdManager);
        ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
     
        context.setHandler(sessionHandler);
     
        context.setContextPath("/");
        context.addServlet("webservlet.IndexServlet", "/index");
        context.addServlet("webservlet.HomeServlet", "/home");
        context.addServlet("webservlet.CategoryServlet", "/category");
        context.addServlet("webservlet.ProductServlet", "/product");
        context.addServlet("webservlet.SearchByPriceServlet", "/search-by-price");
        context.addServlet("webservlet.SearchByOsServlet", "/search-by-os");
        context.addServlet("webservlet.SearchByNameServlet", "/search-by-name");
        context.addServlet("webservlet.SearchByManufacturerServlet", "/search-by-manufacturer");
        context.addServlet("webservlet.OrderByPriceServlet", "/order-by-price");
        context.addServlet("webservlet.SearchByScreenSizeServlet", "/search-by-screen-size");
        context.addServlet("webservlet.SearchByRamServlet", "/search-by-ram");
        context.addServlet("webservlet.OAuth2CallbackServlet", "/oauth2callback");

        context.addServlet("webservlet.ajax.GetStoreByPhoneCodeAndProvinceServlet", "/ajax/get-store-by-phone-code");
        context.addServlet("webservlet.ajax.GetJsonStoreByPhoneCodeAndProvinceServlet", "/ajax/get-json-store-by-phone-code-and-province");
        context.addServlet("webservlet.ajax.GetLocalStorageDataServlet", "/ajax/get-local-storage-data");
        context.addServlet("webservlet.ajax.GetPhoneArticle", "/ajax/get-phone-article");
        context.addServlet("webservlet.ajax.GetTopComment", "/ajax/get-top-comment");
        context.addServlet("webservlet.ajax.GetComment", "/ajax/get-comment");
        context.addServlet("webservlet.ajax.GetPhoneTechSpec", "/ajax/get-phone-tech-spec");
        context.addServlet("webservlet.ajax.LoginUser", "/ajax/login-user");
        context.addServlet("webservlet.ajax.LogoutUser", "/ajax/logout-user");
        context.addServlet("webservlet.ajax.InsertComment", "/ajax/post-comment");
        context.addServlet("webservlet.ajax.InsertSubComment", "/ajax/post-sub-comment");
        context.addServlet("webservlet.ajax.GetPhoneAutoComplete", "/ajax/get-phone-auto-complete");
        context.addServlet("webservlet.ajax.GetMoreCategoryProduct", "/ajax/get-more-category-product");
        context.addServlet("webservlet.ajax.GetMoreSearchByPrice", "/ajax/get-more-search-by-price");
        context.addServlet("webservlet.ajax.GetMoreSearchByOs", "/ajax/get-more-search-by-os");
        context.addServlet("webservlet.ajax.GetMoreSearchByName", "/ajax/get-more-search-by-name");
        context.addServlet("webservlet.ajax.GetSuggestSearchByName", "/ajax/get-suggest-search-by-name");
        context.addServlet("webservlet.ajax.GetMoreSearchByManufacturer", "/ajax/get-more-search-by-manufacturer");
        context.addServlet("webservlet.ajax.GetMoreOrderByPrice", "/ajax/get-more-order-by-price");
        context.addServlet("webservlet.ajax.GetMoreSearchByScreenSize", "/ajax/get-more-search-by-screen-size");
        context.addServlet("webservlet.ajax.GetMoreSearchByRam", "/ajax/get-more-search-by-ram");
        context.addServlet("webservlet.ajax.GetBoxRating", "/ajax/get-box-rating");
        context.addServlet("webservlet.ajax.SearchSimilarPrice", "/ajax/search-similar-price");
        context.addServlet("webservlet.ajax.InsertOrderSingle", "/ajax/insert-order-single");
        context.addServlet("webservlet.ajax.UpdateNumLike", "/ajax/update-num-like");
        context.addServlet("webservlet.ajax.UpdateNumLikeSubComment", "/ajax/update-num-like-subcomment");

        ResourceHandler resourse_handle = new ResourceHandler();
        resourse_handle.setDirectoriesListed(true);
        resourse_handle.setResourceBase("static");
        HandlerList handlers = new HandlerList();
        FilterHolder gzipFilterHolder = this.createGzipFilterHolder();
        handler.addFilter(gzipFilterHolder, this.createFilterMapping("/*", gzipFilterHolder));
        handlers.setHandlers(new Handler[]{resourse_handle, /*handler,*/ context});
        server.setHandler(handlers);

        server.setStopAtShutdown(true);
//        server.setSendServerVersion(true);

        server.start();
        server.join();

    }

    private FilterHolder createGzipFilterHolder() {
        Filter gzip = new GzipFilter();
        FilterHolder filterHolder = new FilterHolder(gzip);
        filterHolder.setName("gzip");
        return filterHolder;

    }

    private FilterMapping createFilterMapping(String pathSpec, FilterHolder filterHolder) {
        FilterMapping filterMapping = new FilterMapping();
        filterMapping.setPathSpec(pathSpec);
        filterMapping.setFilterName(filterHolder.getName());
        return filterMapping;

    }
}

Không có nhận xét nào:

Đăng nhận xét