2011-11-29 16 views
7

Tôi có một ứng dụng web Java (Eclipse/OSGI) trên một máy chủ Jetty. Tôi muốn có thể phục vụ các tệp tĩnh cho ứng dụng web của tôi từ một thư mục bên ngoài gốc web. Trong ứng dụng web của tôi, tôi chưa biết tên tệp của tệp tôi muốn được phân phối, vì vậy tôi muốn lấy tên tệp (và/hoặc đường dẫn) làm tham số VM khi tôi khởi động ứng dụng web của mình. Ví dụ:Cung cấp các tệp từ thư mục ứng dụng web bên ngoài trong Jetty

Tôi có hình ảnh - myImg.jpg - mà tôi đã đặt trong một thư mục trên hệ thống tệp máy chủ, ví dụ: root/images/myImg.jpg. Tôi muốn lấy thông số này làm thông số VM, ví dụ: "-DmyImg =/images/myImg.jpg /" để tôi có thể lấy hình ảnh và hiển thị nó trên trang web của tôi. Làm thế nào tôi có thể thực hiện điều này? Tôi có thể làm điều này mà không cần tạo Servlet mới không?

Cảm ơn bạn đã giúp đỡ!

+0

Tôi đang cố gắng sử dụng một ContextHandler trong file jetty.xml cấu hình, trong đó tôi trỏ baseResource vào thư mục thực sự trên hệ thống tệp, nhưng khi tôi cố gắng truy cập nó thông qua contextPath, tài nguyên là "null". – Farna

Trả lời

11

Giải quyết!

Đây là những gì tôi đã thêm vào tập tin jetty.xml tôi:

<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: Trong câu trả lời của bạn tôi không thể hiểu làm thế nào bạn đang đi qua các tên tập tin như tham số VM. Đây là những gì tôi đã làm.

Tôi đã tạo testparvez.xml tệp trong cầu cảng webapps thư mục.

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

Sau đó, tôi bắt đầu cầu cảng như

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

Và cuối cùng tôi truy cập từ url http://localhost:8082/testparvez/