Domanda

C'è un modo semplice per mappare una directory nel web.xml o altro descrittore di deployment (jetty.xml, ecc) file?

Per esempio, se ho un directory / opt / files / c'è un modo che io possa accedere ai file e sottodirectory visitando http: // localhost / some-mapping / ? Mi sembra che ci dovrebbe essere un modo semplice di fare questo, ma non sono stato in grado di scoprire in che modo (tramite google, StackOverflow, ecc). Tutto quello che ho trovato sono servlet che imitano file server, che non è quello che vorrei.

Per avere un riferimento sto usando molo su una scatola di AIX.

È stato utile?

Soluzione

Non ho idea di come farlo con Jetty, ma in Tomcat si può semplicemente aggiungere un nuovo <Context> a server.xml:

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

In questo modo è accessibile in http://example.com/files/.... Vedere se qualcosa di simile esistono per Jetty.

Aggiorna : dopo Googling, il "codice Java normale" equivalente sarebbe qualcosa come:

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

Ora ancora tradurlo in sapore jetty.xml. Sono un po 'indovinare basato sulla documentazione e gli esempi trovati sul web, quindi non mi inchiodi su di esso:

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

Un'altra possibilità potrebbe essere questo:

<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>

Altri suggerimenti

Dopo un po 'di più armeggiare intorno, il modo migliore per farlo (per pontile) è quello di distribuire un descrittore nella directory contesto che appare come il seguente ...

<?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>

Spero che questo aiuta a qualcun altro!

Non so che si può fare come una mappatura URL, tuttavia i file e le cartelle nella stessa directory che il file web.xml è in sarà accessibile nel modo che lei descrive, anche se non è possibile controllare il di classificazione, sotto il vostro webapp.

L'adatto alle vostre esigenze?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top