栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

带有Servlet 3.0的嵌入式Tomcat

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带有Servlet 3.0的嵌入式Tomcat

尽管我没有特定的方式来加载单个

catalina.properties
属性,但我发现它很方便,只需将JarScanner本身重载在Tomcat容器上下文中,如下所示:

答案在Groovy中 (对不起,我很懒)

public static void main(String[] args) throws ServletException, LifecycleException {    Tomcat tomcat = new TomcatWithFastJarScanner()    tomcat.setPort(8080)    StandardContext ctx = (StandardContext) tomcat.addWebapp("/", new File("web").getAbsolutePath())    //declare an alternate location for your "WEB-INF/classes" dir:         VirtualDirContext resources = new VirtualDirContext()    resources.setExtraResourcePaths("/WEB-INF/classes=" + new File("target/classes"))    ctx.setResources(resources)    tomcat.start()    println "Started server on port 8080"    tomcat.getServer().await()}private static class TomcatWithFastJarScanner extends Tomcat {    @Override    public void start() throws LifecycleException {        getServer().findServices().each { service -> service.getContainer().findChildren().each { container ->     container.findChildren().each { c ->         ((Context) c).setJarScanner(new FastJarScanner())     } }        }        super.start()    }}private static class FastJarScanner extends StandardJarScanner {    def jarsToInclude = [ 'spring-web.*' ]    @Override    public void scan(ServletContext context, ClassLoader classloader, JarScannerCallback callback, Set<String> jarsToSkip) {        jarsToSkip = new HashSet<String>();        ((URLClassLoader) classloader.getParent()).getURLs().each { def jar = it.path.find(/[^/]+.jar$/) if(!jar) return for(String inclusionPattern : jarsToInclude) {     if(jar.find(inclusionPattern))println "including jar: " + jar     else jarsToSkip.add(jar) }        }        super.scan(context, classloader, callback, jarsToSkip);    }}

基本思想是,我们正在查看类加载器可以看到的所有jar,并排除了我们不想包含的所有jar。

Tomcat嵌入式可以像这样快速启动!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379820.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号