【问题标题】:Tomcat embedded correct usage of addContext for docBaseTomcat 为 docBase 嵌入了 addContext 的正确用法
【发布时间】:2013-01-12 18:44:17
【问题描述】:

有谁知道如何在嵌入式 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();  
    }
}

【问题讨论】:

    标签: java tomcat configuration embedded-tomcat-7


    【解决方案1】:

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

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

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

    【讨论】:

    • 你有更多关于如何使用addContext的细节吗?如何定义默认 servlet 并添加 ContentListener 对象?我有点卡在这个问题上:stackoverflow.com/questions/23339954/… 我尝试使用 addContext() 的返回值来执行 ctx.getServletContext.addListener(...),但我得到了一个非法状态,因为它已经被初始化了
    猜你喜欢
    • 2014-01-10
    • 2011-08-15
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 2019-03-01
    • 1970-01-01
    • 2018-04-07
    相关资源
    最近更新 更多