【问题标题】:Set extra servlet class path on Tomcat在 Tomcat 上设置额外的 servlet 类路径
【发布时间】:2017-03-18 21:20:07
【问题描述】:

是否有一种编程解决方案可以为 Tomcat 9 嵌入式服务器添加用于 servlet 3.1 注释扫描的类路径(除了琐碎的WEB-INF/classes)?不使用任何 XML、WAR 或 WEB-INF 文件夹。

我已经做到了这一点,但如果没有 WEB-INF 或 WAR 工件,我不知道如何进行:

static void startServer() {
    Tomcat server = new Tomcat();
    server.setPort(7070);
    StandardContext context = (StandardContext) server.addWebapp("", "/");
    WebResourceRoot resources = new StandardRoot(context);
    resources.addPreResources(new DirResourceSet(resources, "/WEB-INF/classes", "build/classes/main/java/", "/"));
    context.setResources(resources);
    server.start();
    server.getServer().await();
}

这是我对 Jetty 的解决方案:

static void startServer() {
    final Server server = new Server(7070);
    final WebAppContext context = new WebAppContext("/", "/");
    context.setConfigurations(new Configuration[] { new AnnotationConfiguration(), new WebInfConfiguration() });
    context.setExtraClasspath("build/classes/main");
    server.setHandler(context);
    server.start();
    server.join();
}

【问题讨论】:

    标签: java tomcat servlets


    【解决方案1】:

    您快到了,唯一缺少的是您需要提供 lib 文件夹的自定义路径(应用程序 jar 文件所在的位置并加载到 Tomcat 服务器中)作为 DirResourceSet 构造函数的一部分打电话,即resources.addPreResources(new DirResourceSet(resources, "/your_own/lib", "build/classes/main/java/", "/"));

    有关DirResourceSet的更多详细信息,请查看API here

    【讨论】:

    • 但是我没有lib 文件夹,我的根文件夹是gradle, src, build。我应该找到 Intellij Idea 和 Gradle 将我的依赖项放在哪里吗?
    • 是的,添加JAR文件所在的文件夹路径
    猜你喜欢
    • 2012-02-18
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 2011-10-22
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多