Frage

Gibt es eine einfache Möglichkeit, ein Verzeichnis in der web.xml oder anderen Deployment Descriptor (jetty.xml usw.) Dateien?

zur Karte

Zum Beispiel, wenn ich ein Verzeichnis / opt / Dateien / gibt es eine Möglichkeit, dass ich seine Dateien und Unterverzeichnisse durch den Besuch http: // localhost / some-Kartierungs- / ? Es scheint mir, dass es eine einfache Möglichkeit, dies zu tun sein sollte, aber ich habe nicht in der Lage gewesen, um herauszufinden, wie (via google, Stackoverflow, etc). Alles, was ich habe, sind Servlets gefunden, die Datei-Server zu imitieren, was nicht ist, was würde Ich mag.

Als Referenz Ich bin mit Anlegestelle auf einer AIX-Box.

War es hilfreich?

Lösung

Keine Ahnung, wie es mit Jetty zu tun, aber in Tomcat können Sie einfach einen neuen <Context> zu server.xml hinzufügen:

<Context docBase="/opt/files" path="/files" />

So ist es durch http://example.com/files/... zugänglich ist. Sehen Sie, wenn etwas ähnliches gibt es für Jetty.

Aktualisieren : Nach googeln, der "normale Java-Code" gleichwertig so etwas wie wäre:

WebAppContext files = new WebAppContext("/opt/files", "/files");
Server server  = new Server(8080);
server.setHandler(files);
server.start(); 

Jetzt noch zu übersetzen, dass in jetty.xml Geschmack. Ich bin ein bisschen auf die Dokumentation anhand Erraten und Beispiele auf dem Netz gefunden, also nicht pin mich nicht auf sie:

<Configure class="org.mortbay.jetty.webapp.WebAppContext">
    <Set name="webApp">/opt/files</Set>
    <Set name="contextPath">/files</Set>
</Configure>

Eine andere Möglichkeit kann sein:

<Configure class="org.mortbay.jetty.Server">
    <Call name="addHandler">
        <Arg>
            <New class="org.mortbay.jetty.webapp.WebAppContext">
                <Arg name="webApp">/opt/files</Arg>
                <Arg name="contextPath">/files</Arg>
            </New>
        </Arg>
    </Call>
</Configure>

Andere Tipps

Nach weiteren Hantieren, der beste Weg, dies zu tun (zum Anlegesteg) ist einen Descriptor im Kontext Verzeichnis bereitstellen, die wie folgt aussehen ...

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">

<!-- Configuration of a custom context. -->
<Configure class="org.eclipse.jetty.server.handler.ContextHandler">
    <Call class="org.eclipse.jetty.util.log.Log" name="debug">
        <!-- The default message to show if our context breaks. -->
        <Arg>Configure context.xml</Arg>
    </Call>
    <!--
        The context path is the web location of the context in relation to the
        server address.
    -->
    <Set name="contextPath">/context</Set>
    <!--
        The resource base is the server directory to use for fetching files.
    -->
    <Set name="resourceBase">/path/to/files/on/server</Set>
    <Set name="handler">
        <New class="org.eclipse.jetty.server.handler.ResourceHandler">
            <Set name="directoriesListed">true</Set>
            <!-- For now we don't need any welcome files -->
            <!--
                <Set name="welcomeFiles"> <Array type="String">
                <Item>index.html</Item> </Array> </Set>
            -->
            <!--
                The cache time limit in seconds (ie max-age=3600 means that if the
                document is older than 1 hour a fresh copy will be fetched).
            -->
            <Set name="cacheControl">max-age=3600,public</Set>
        </New>
    </Set>
</Configure>

Ich hoffe, dass dies hilft jemand anderes!

Ich weiß nicht, dass Sie tun können, dass als URL-Mapping jedoch Dateien und Ordner im selben Verzeichnis, das Ihre Datei web.xml in die Sie beschreiben zugänglich sein wird in der Art und Weise, auch wenn Sie nicht die Kontrolle zu können Mapping unter Ihrem Webapp.

Hat das Ihre Bedürfnisse?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top