本文整理汇总了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);
}
}
示例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);
}
示例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);
}
示例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);
}