當前位置: 首頁>>代碼示例>>Java>>正文


Java ServletContextHandler.setClassLoader方法代碼示例

本文整理匯總了Java中org.eclipse.jetty.servlet.ServletContextHandler.setClassLoader方法的典型用法代碼示例。如果您正苦於以下問題:Java ServletContextHandler.setClassLoader方法的具體用法?Java ServletContextHandler.setClassLoader怎麽用?Java ServletContextHandler.setClassLoader使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在org.eclipse.jetty.servlet.ServletContextHandler的用法示例。


在下文中一共展示了ServletContextHandler.setClassLoader方法的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: run

import org.eclipse.jetty.servlet.ServletContextHandler; //導入方法依賴的package包/類
public void run() {
	ServletContextHandler servletContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
	servletContextHandler.setContextPath("/");
	servletContextHandler.setResourceBase("./res");
	servletContextHandler.addFilter(CommonFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST));//增加過濾器
	servletContextHandler.addServlet(LoginServlet.class, "/login.cgi");
	servletContextHandler.addServlet(UserinfoServlet.class, "/userinfo.cgi");
	servletContextHandler.addServlet(FileBrowseServlet.class, "/file_browse.cgi");
	servletContextHandler.addServlet(DefaultServlet.class, "/");
	servletContextHandler.addServlet(ChangePassword.class, "/changepassword.cgi");
	servletContextHandler.addServlet(AddDeviceToGroupServlet.class, "/device/add_device_to_group.cgi");
	servletContextHandler.addServlet(AddGroupServlet.class, "/group/add_group.cgi");
	servletContextHandler.addServlet(GetGroupsServlet.class	, "/group/get_groups.cgi");
	servletContextHandler.addServlet(EditGroupServlet.class, "/group/edit_group.cgi");
	servletContextHandler.addServlet(GetAllGroupsServlet.class, "/group/get_all_groups.cgi");
	servletContextHandler.addServlet(DeteleGroupServlet.class, "/group/delete_group.cgi");
	servletContextHandler.addServlet(AddDeviceToGroupServlet.class, "/group/add_device_to_group.cgi");
	servletContextHandler.addServlet(DeleteDeviceFromGroupServlet.class,"/group/delete_device_from_group.cgi");
	
	ServletHolder fileUploadServletHolder = new ServletHolder(new UploadServlet());
	fileUploadServletHolder.getRegistration().setMultipartConfig(new MultipartConfigElement(System.getProperty("user.dir") +JettyConfig.UPLOAD_TMP_PATH));
	servletContextHandler.addServlet(fileUploadServletHolder, "/upload.cgi");
	
	servletContextHandler.setClassLoader(Thread.currentThread().getContextClassLoader());
       
       server.setHandler(servletContextHandler);
       try {
		server.start();
		server.join();
		
	} catch (Exception e) {
		logger.error("",e);
	}
}
 
開發者ID:GroupControlDroid,項目名稱:GroupControlDroidClient,代碼行數:35,代碼來源:JettyServer.java

示例2: initJettyContextHandler

import org.eclipse.jetty.servlet.ServletContextHandler; //導入方法依賴的package包/類
private void initJettyContextHandler(final CoreConfigure cfg) {
    final ServletContextHandler context = new ServletContextHandler(NO_SESSIONS);

    // websocket-servlet
    context.addServlet(new ServletHolder(new WebSocketAcceptorServlet(coreModuleManager, moduleResourceManager)), "/module/websocket/*");

    // module-http-servlet
    context.addServlet(new ServletHolder(new ModuleHttpServlet(coreModuleManager, moduleResourceManager)), "/module/http/*");

    context.setContextPath("/sandbox/" + cfg.getNamespace());
    context.setClassLoader(getClass().getClassLoader());
    httpServer.setHandler(context);
}
 
開發者ID:alibaba,項目名稱:jvm-sandbox,代碼行數:14,代碼來源:JettyCoreServer.java

示例3: WebUIApp

import org.eclipse.jetty.servlet.ServletContextHandler; //導入方法依賴的package包/類
public WebUIApp() throws IOException {
    server = new Server();

    AnnotationConfigWebApplicationContext springContext = new AnnotationConfigWebApplicationContext();
    springContext.setClassLoader(this.getClass().getClassLoader());
    springContext.setConfigLocation("com.sst.burpextender.proxyhistory.webui.springmvc.config");

    DispatcherServlet dispatcherServlet = new DispatcherServlet(springContext);
    ServletHolder springServletHolder = new ServletHolder("mvc-dispatcher", dispatcherServlet);

    // ref: https://github.com/bkielczewski/example-spring-mvc-jetty
    // ref: https://github.com/fernandospr/spring-jetty-example
    ServletContextHandler contextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
    contextHandler.setErrorHandler(null);
    contextHandler.setContextPath("/");
    contextHandler.addServlet(springServletHolder, "/*");
    contextHandler.addEventListener(new ContextLoaderListener(springContext));
    contextHandler.setResourceBase(new ClassPathResource("/webui", WebUIApp.class).getURI().toString());

    /* NOTE: Burp Extender において、 burp.BurpExtender については jar をロードしたclass loader內で実行される。
     * 一方、Tabなど獨自のUIを追加した場合は、UIから呼ばれるコードはBurp自身のclass loader內で実行される。
     * つまり、Webアプリのstart/stopをBurp上に追加したUIからそのまま = Swingのスレッド內から呼び出す場合、
     * その一連の過程で使われるclass loaderはburp自身のものであり、
     * 「Burp Extender の jar 內のclassを見つけることができない。」
     * # 実際に見てみると、Thread.currentThread().getContextClassLoader() が sun.misc.Launcher$AppClassLoader となる.
     * 
     * その結果として、特に何の手當もしなかった場合、以下のような様々な、予期せぬclass loading関連の例外に遭遇する。
     * - Spring で setConfigLocation() で指定したパッケージがスキャンされない。
     * - Spring で @ComponentScan(basePackages = xxx) で指定したパッケージがスキャンされない。
     * ==> 結果として Spring MVC の初期化時に "No annotated classes found for specified class/package" のログが出力される。
     * - Spring + Thymeleaf 內部でのSpring EL式の生成で class not found 例外発生
     * 
     * そこで、Jetty側のレベルでclass loaderをカスタマイズする。
     * 本クラスのインスタンスをロードした class loader であれば、Burp Extender の jar をロードしているので、それを使うようにする。
     * これにより、Spring の annotation class のスキャンや、Spring MVC 內部で発生する様々な class loading が本來の形で動作するようになる。
     */
    contextHandler.setClassLoader(this.getClass().getClassLoader());

    CharacterEncodingFilter utf8Filter = new CharacterEncodingFilter();
    utf8Filter.setEncoding("UTF-8");
    utf8Filter.setForceEncoding(true);
    FilterHolder filterHolder = new FilterHolder(utf8Filter);
    EnumSet<DispatcherType> allDispatcher = EnumSet.of(
        DispatcherType.ASYNC,
        DispatcherType.ERROR,
        DispatcherType.FORWARD,
        DispatcherType.INCLUDE,
        DispatcherType.REQUEST);
    contextHandler.addFilter(filterHolder, "/*", allDispatcher);

    server.setHandler(contextHandler);
}
 
開發者ID:SecureSkyTechnology,項目名稱:burpextender-proxyhistory-webui,代碼行數:53,代碼來源:WebUIApp.java

示例4: initJettyServer

import org.eclipse.jetty.servlet.ServletContextHandler; //導入方法依賴的package包/類
private void initJettyServer() {
    InetSocketAddress address = new InetSocketAddress(config.getHost(), config.getPort());
    jettyServer = new Server(address);

    handler = new ServletContextHandler();
    handler.setContextPath(config.getContextPath());
    handler.setClassLoader(new JbootServerClassloader(JettyServer.class.getClassLoader()));
    handler.setResourceBase(getRootClassPath());

    JbootShiroConfig shiroConfig = Jboot.config(JbootShiroConfig.class);
    if (shiroConfig.isConfigOK()) {
        handler.addEventListener(new EnvironmentLoaderListener());
        handler.addFilter(ShiroFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST));
    }

    //JFinal
    FilterHolder jfinalFilter = handler.addFilter(JFinalFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST));
    jfinalFilter.setInitParameter("configClass", Jboot.me().getJbootConfig().getJfinalConfig());

    JbootHystrixConfig hystrixConfig = Jboot.config(JbootHystrixConfig.class);
    if (StringUtils.isNotBlank(hystrixConfig.getUrl())) {
        handler.addServlet(HystrixMetricsStreamServlet.class, hystrixConfig.getUrl());
    }


    JbootMetricConfig metricsConfig = Jboot.config(JbootMetricConfig.class);
    if (StringUtils.isNotBlank(metricsConfig.getUrl())) {
        handler.addEventListener(new JbootMetricServletContextListener());
        handler.addEventListener(new JbootHealthCheckServletContextListener());
        handler.addServlet(AdminServlet.class, metricsConfig.getUrl());
    }

    io.jboot.server.Servlets jbootServlets = new io.jboot.server.Servlets();
    ContextListeners listeners = new ContextListeners();

    JbootAppListenerManager.me().onJbootDeploy(jbootServlets, listeners);


    for (Map.Entry<String, io.jboot.server.Servlets.ServletInfo> entry : jbootServlets.getServlets().entrySet()) {
        for (String path : entry.getValue().getUrlMapping()) {
            handler.addServlet(entry.getValue().getServletClass(), path);
        }
    }


    for (Class<? extends ServletContextListener> listenerClass : listeners.getListeners()) {
        handler.addEventListener(ClassKits.newInstance(listenerClass));
    }

    jettyServer.setHandler(handler);
}
 
開發者ID:yangfuhai,項目名稱:jboot,代碼行數:52,代碼來源:JettyServer.java


注:本文中的org.eclipse.jetty.servlet.ServletContextHandler.setClassLoader方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。