java - Tomcat 为 docBase 嵌入了 addContext 的正确用法

标签 java tomcat configuration embedded-tomcat-7

有谁知道如何在嵌入式 Tomcat 实例中设置上下文以从不在已部署文件夹中的本地目录提供文件?

在标准的 server.xml 中,它看起来像这样:

<Context docBase="/MyWebApp/images" path="/tmp/images/" reloadable="false"/>

我尝试了以下 tomcat 嵌入式调用的不同变体,但均未成功:

tomcat.addContext(tomcat.getHost(), "/MyWebApp/images", "/tmp/images/");

我也试过:

tomcat.addContext("/MyWebApp/images", "/tmp/images/");

看起来这个 grails 问题的思路是一样的:

grails: add context to embedded tomcat in development

但我没有使用 grails。 (使用 Java)

这是我使用的完整启动代码:

package launch;

import java.io.File;
import org.apache.catalina.startup.Tomcat;

public class Main {

    public static void main(String[] args) throws Exception {

        String webappDirLocation = "/src/main/webapp/";
        Tomcat tomcat = new Tomcat();

        //The port that we should run on can be set into an environment variable
        //Look for that variable and default to 8080 if it isn't there.
        String webPort = System.getenv("PORT");
        if(webPort == null || webPort.isEmpty()) {
            webPort = "8080";
        }

        tomcat.setPort(Integer.valueOf(webPort));

        tomcat.addWebapp("/MyWebApp", new File(webappDirLocation).getAbsolutePath());
        tomcat.addContext("/MyWebApp/images", "/tmp/images/");

        tomcat.start();
        tomcat.getServer().await();  
    }
}

最佳答案

将 Web 应用程序添加到嵌入式 Apache Tomcat 有两种通用方法。 addContext()addWebapp()

addContext() 需要完全编程的方法。您必须通过 API 配置所有内容。这包括提供静态内容(如图像)的默认 servlet。您尚未配置默认 Servlet,因此不会提供静态内容。

您几乎肯定想要使用 addWebapp(),这与在 webapps 文件夹中放置一个目录并让 Tomcat 自动部署它大致相似。在这种情况下,与 conf/web.xml 中相同的设置(默认 servlet、JSP servlet、MIME 类型映射、欢迎文件等)将应用于 webapp。

关于java - Tomcat 为 docBase 嵌入了 addContext 的正确用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14578794/

相关文章:

java - Ajax 向 Servlet 发出请求时返回 404

java - Spring方法获取给定类型的所有bean

eclipse - Amazon EC2- Tomcat 远程调试问题

java - 下载 jre v8 后 Apache Tomcat 不工作

java - spring web development - 禁用静态内容的缓存

python - 在 Emacs 中配置新模式 : installing python-mode. el

c# - 如何使用 ConfigurationElementCollection 实现 ConfigurationSection

java - 监控应用程序框架

java - 创建文件夹然后在该文件夹中创建文件时遇到问题

java - Android Mediaplayer Streaming - 现在工作但没有