2011-11-29 12 views
7

Mam aplikację internetową Java (Eclipse/OSGI) na serwerze Jetty. Chcę móc wyświetlać pliki statyczne w mojej aplikacji internetowej z folderu poza katalogiem głównym. W mojej aplikacji sieciowej nie znam jeszcze nazwy pliku, który chcę obsłużyć, dlatego chcę wziąć nazwę pliku (i/lub ścieżkę) jako parametr maszyny wirtualnej po uruchomieniu aplikacji internetowej. Na przykład:Pliki serwowania z folderu poza aplikacją WWW w Jetty

Mam obraz - myImg.jpg - który umieściłem w folderze w systemie plików serwera, na przykład root/images/myImg.jpg. Chcę wziąć to jako parametr maszyny wirtualnej, np. "-DmyImg =/images/myImg.jpg /", dzięki czemu mogę uzyskać obraz i wyświetlić go na mojej stronie internetowej. Jak mogę to zrobić? Czy mogę to zrobić bez tworzenia nowego serwletu?

Z góry dziękuję za pomoc!

+0

Próbuję użyć ContextHandler w pliku konfiguracyjnym jetty.xml, w którym to punkcie baseResource do faktycznego folderu w systemie plików, ale gdy próbuję uzyskać do niego dostęp za pośrednictwem właściwości contextPath, zasób ma wartość "null". – Farna

Odpowiedz

11

Rozwiązano!

To właśnie dodane do mojego pliku 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

@Farna: W swojej odpowiedzi nie jestem w stanie zrozumieć, w jaki sposób przekazujemy nazwę pliku jako parametr VM. Oto co zrobiłem.

Utworzono plik testparvez.xml w pomoście webapps katalogu.

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

Wtedy zacznę molo jako

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

I wreszcie mam dostępu z url http://localhost:8082/testparvez/

Powiązane problemy