2013-02-19 25 views
8

Có thể sử dụng Jetty được nhúng để phục vụ các tệp tĩnh từ thư mục X nhưng được ánh xạ tới URL Y không? Tôi có các tệp tĩnh được lưu trữ trong thư mục "web", nhưng tôi muốn URL giống như http://host/myapp.Bản đồ cầu cảng ResourceHandler đến một URL

Tôi đã chạy đã thành công một máy chủ được cấu hình với ResourceHandler theo cách sau:

ResourceHandler ctx = new ResourceHandler(); 
ctx.setResourceBase("path-to-web"); 
HandlerList list = new HandlerList(); 
list.addHandler(ctx); 
... 
server.setHandler(list); 

Nhưng kết quả được phục vụ các tập tin dưới /web và không thuộc thẩm ánh xạ URL mong muốn.

Trả lời

18

ResourceHandler không có cấu hình ngữ cảnh, nhưng bạn có thể chỉ cần bọc nó trong ContextHandler để đạt được điều đó.

Hãy thử điều này thay vì:

ResourceHandler resHandler = new ResourceHandler(); 
resHandler.setResourceBase("path-to-web"); 
ContextHandler ctx = new ContextHandler("/my-files"); /* the server uri path */ 
ctx.setHandler(resHandler); 
server.setHandler(ctx); 

Điều đó sẽ phục vụ /my-files như nội dung ResourceHandler của hệ thống tập tin path-to-web

1

ở trên không làm việc cho Jetty 9, nhưng điều này không:

ContextHandler contextHandler = new ContextHandler("/my-files"); 
contextHandler.setResourceBase("/tmp/static"); 

ResourceHandler resourceHandler = new ResourceHandler(); 
contextHandler.setHandler(resourceHandler); 

server.setHandler(contextHandler); 
+0

điều này có vẻ không hoạt động với cầu cảng 9. Bạn có thể cung cấp liên kết tới một số tài liệu không? –

+0

Tôi đã tạo câu hỏi riêng cho cầu cảng 9 - http://stackoverflow.com/questions/28346438/resourcehandler-stop-hosting-files-with-jetty-9-404-not-found-error-works-fin Sẽ là vui mừng nếu bạn cho tôi một gợi ý –