Служить файлы из папки за пределами веб-приложения в Jetty - PullRequest
7 голосов
/ 29 ноября 2011

У меня есть веб-приложение Java (Eclipse / OSGI) на сервере Jetty. Я хочу иметь возможность передавать статические файлы в мое веб-приложение из папки вне корневого веб-каталога. В моем веб-приложении я еще не знаю имя файла, который я хочу обслуживать, поэтому я хочу взять имя файла (и / или путь) в качестве параметра виртуальной машины при запуске веб-приложения. Например:

У меня есть изображение myImg.jpg, которое я положил в папку на файловой системе сервера, например, root / images / myImg.jpg. Я хочу принять это как параметр VM, например, «-DmyImg = / images / myImg.jpg /», чтобы я мог получить изображение и отобразить его на своей веб-странице. Как я могу сделать это? Могу ли я сделать это без создания нового сервлета?

Заранее спасибо за любую помощь!

Ответы [ 2 ]

11 голосов
/ 30 ноября 2011

Решено!

Вот что я добавил в свой файл jetty.xml:

<Set name="handler">
    <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
        <Set name="handlers">
            <Array type="org.eclipse.jetty.server.Handler">
                <Item>
                    <New class="org.eclipse.jetty.server.handler.ContextHandler">
                        <Set name="contextPath">/myContextPath</Set>
                        <Set name="handler">
                            <New class="org.eclipse.jetty.server.handler.ResourceHandler">
                                <Set name="directoriesListed">false</Set>
                                <Set name="resourceBase">/actual/folder/on/file/system</Set>
                            </New>
                        </Set>
                    </New>
                </Item>
                [...other handlers...]
            </Array>
        </Set>
    </New>
</Set>
3 голосов
/ 30 декабря 2012

@ Фарна: В вашем ответе я не могу понять, как вы передаете имя файла в качестве параметра VM. Это то, что я сделал.

Я создал testparvez.xml файл в каталоге jetty webapps.

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

<Configure class="org.eclipse.jetty.server.handler.ContextHandler">
  <Set name="contextPath">/testparvez</Set>
  <Set name="resourceBase"><SystemProperty name="mydir"/></Set>
  <Set name="handler">
    <New class="org.eclipse.jetty.server.handler.ResourceHandler">
      <Set name="welcomeFiles">
        <Array type="String">
          <Item><SystemProperty name="myfile"/></Item>
        </Array>
      </Set>
      <Set name="cacheControl">max-age=3600,public</Set>
    </New>
  </Set>
</Configure>

Тогда я начинаю причал как

java -jar start.jar jetty.port=8082 -Dmydir=C:/test/javadoc/ -Dmyfile=index.html

И, наконец, я получаю доступ с URL http://localhost:8082/testparvez/

...