Question

Y at-il un moyen facile de mapper un répertoire dans le web.xml ou un autre descripteur de déploiement de fichiers (jetty.xml, etc.)?

Par exemple, si j'ai un répertoire / opt / fichiers / est-il un moyen que je peux accéder à ses fichiers et sous-répertoires en visitant http: // localhost / some-mapping / ? Il me semble qu'il devrait y avoir un moyen simple de le faire, mais je n'ai pas été en mesure de savoir comment (via google, stackoverflow, etc.). Tout ce que j'ai trouvé sont servlets qui simulent fileservers, ce qui est pas ce que je voudrais.

Pour référence, je me sers jetée sur une boîte AIX.

Était-ce utile?

La solution

Aucune idée de le faire avec la jetée, mais dans Tomcat, vous pouvez simplement ajouter une nouvelle <Context> à server.xml:

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

De cette façon, il est accessible par http://example.com/files/.... Voir si quelque chose exist similaire pour la jetée.

Mise à jour : après recherche sur Google, le "code Java normal" équivalent serait quelque chose comme:

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

Maintenant encore traduire en saveur jetty.xml. Je suis un peu devinant basé sur la documentation et des exemples trouvés sur le web, alors ne me frapperai pas là-dessus:

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

Une autre possibilité peut être ceci:

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

Autres conseils

Après un peu plus bidouiller, la meilleure façon de le faire (pour la jetée) est de déployer un descripteur dans le répertoire contexte qui ressemble à ce qui suit ...

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

J'espère que cela aide quelqu'un d'autre!

Je ne sais pas que vous pouvez le faire en tant que mappage d'URL, les fichiers et les dossiers cependant dans le même répertoire que votre fichier web.xml est en sera accessible de la façon que vous décrivez, bien que vous ne pouvez pas contrôler la la cartographie sous votre webapp.

Est-ce que répondre à vos besoins?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top