3

展開されたフォルダー内にないローカル ディレクトリからファイルを提供するために、埋め込まれた 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: 開発中の埋め込み tomcat にコンテキストを追加

しかし、私は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();  
    }
}
4

1 に答える 1

3

組み込み Apache Tomcat に Web アプリケーションを追加するには、2 つの一般的な方法があります。addContext()addWebapp()

addContext()完全にプログラム的なアプローチが必要です。API を介してすべてを構成する必要があります。これには、静的コンテンツ (画像など) を提供するデフォルトのサーブレットが含まれます。デフォルトのサーブレットを構成していないため、静的コンテンツは提供されません。

addWebapp()これは、ディレクトリを webapps フォルダーにドロップして Tomcat に自動展開させるのとほぼ同じです。この場合、conf/web.xml と同等の設定 (デフォルト サーブレット、JSP サーブレット、MIME タイプ マッピング、ウェルカム ファイルなど) が webapp に適用されます。

于 2013-02-03T09:40:57.360 に答える