Pregunta

¿Hay una manera fácil de asignar un directorio en el web.xml u otro descriptor de despliegue (jetty.xml, etc) archivos?

Por ejemplo, si tiene un directorio / opt / archivos / hay una manera que pueda acceder a sus archivos y subdirectorios visitando http: // localhost / algunos de mapeo / ? Se me ocurre que debería haber alguna forma sencilla de hacer esto, pero no he sido capaz de averiguar cómo (a través de Google, stackoverflow, etc). Todo lo que he encontrado son los servlets que imitan a los servidores de archivos, que no es lo que me gustaría.

Para tener una referencia que estoy usando embarcadero en una caja de AIX.

¿Fue útil?

Solución

Ni idea de cómo hacerlo con embarcadero, pero en Tomcat sólo se puede añadir una nueva <Context> a server.xml:

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

De esta manera es accesible por http://example.com/files/.... A ver si existen similares algo por el embarcadero.

Actualizar : después de buscar en Google, el "código Java normal" equivalente sería algo así como:

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

Ahora sin embargo a traducir eso en sabor jetty.xml. Estoy un poco adivinar basa en la documentación y ejemplos que se encuentran en la web, así que no me Pin en él:

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

Otra posibilidad puede ser la siguiente:

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

Otros consejos

Después de un poco más de volverse locos, la mejor manera de hacer esto (por el embarcadero) es el despliegue de un descriptor de contexto en el directorio que se parece a la siguiente ...

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

Espero que esto ayude a alguien más!

No sé que se puede hacer eso como una asignación de dirección URL, sin embargo los archivos y carpetas en el mismo directorio que el archivo web.xml está en será accesible en la forma en que usted describe, aunque no se puede controlar el mapeo debajo de su aplicación web.

¿Eso se adapte a sus necesidades?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top