在Tomcat

时间:2017-03-18 21:20:07

标签: java tomcat servlets

是否有一个程序解决方案,用于将类路径(除了简单的WEB-INF/classes之外)添加到Tomcat 9嵌入式服务器中进行servlet 3.1注释扫描?不使用任何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();
}

1 个答案:

答案 0 :(得分:2)

你几乎就在那里,唯一缺少的是你需要提供lib文件夹的自定义路径(应用程序jar文件所在的位置并加载到Tomcat服务器中)作为{{{ 1}}构造函数调用,即DirResourceSet

有关resources.addPreResources(new DirResourceSet(resources, "/your_own/lib", "build/classes/main/java/", "/"));的详细信息,请查看API here