Có cách nào cho mỗi ứng dụng web/ngữ cảnh để chỉ định tệp ghi đè chỉ dành cho ứng dụng web cụ thể đó không? Cách duy nhất tôi thấy điều này hiện đang làm việc là thông qua dòng lệnh khi bạn khởi động nó. Tôi đã suy nghĩ có lẽ một thiết lập trong tập tin override.xml hoặc thậm chí trong tập tin xml bối cảnh.Bạn có thể chỉ định cho mỗi tệp jetty-rewrite.xml của ứng dụng web trong Jetty không?
Trả lời
Nếu bạn sử dụng context.xml deployables, bạn có thể tích hợp các quy tắc RewriteHandler vào ngữ cảnh cụ thể của ứng dụng xml.
Ví dụ: đây là tệp ngữ cảnh thay thế của số ${jetty.home}/contexts/test.xml
được tìm thấy trong phân phối cầu nối. Nó thêm một quy tắc chỉ đơn giản là thêm một cookie (truy cập = có) vào phản hồi cho tất cả các yêu cầu.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure class="org.eclipse.jetty.server.handler.ContextHandler">
<Set name="contextPath">/</Set>
<Set name="handler">
<New id="Rewrite" class="org.eclipse.jetty.rewrite.handler.RewriteHandler">
<Set name="handler">
<New class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/</Set>
<Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/test.war</Set>
<Set name="extractWAR">true</Set>
<Set name="copyWebDir">false</Set>
<Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
<Set name="overrideDescriptor"><SystemProperty name="jetty.home" default="."/>/contexts/test.d/override-web.xml</Set>
</New>
</Set>
<Set name="rewriteRequestURI">true</Set>
<Set name="rewritePathInfo">false</Set>
<Set name="originalPathAttribute">requestedPath</Set>
<!-- add a cookie to each path visited -->
<Call name="addRule">
<Arg>
<New class="org.eclipse.jetty.rewrite.handler.CookiePatternRule">
<Set name="pattern">/*</Set>
<Set name="name">visited</Set>
<Set name="value">yes</Set>
</New>
</Arg>
</Call>
</New>
</Set>
</Configure>
Để xác minh rằng quy tắc này hoạt động, bắt đầu cầu cảng, goto http://localhost:8080/
và sau đó sử dụng các "phiên" thành phần kiểm tra, bạn sẽ thấy rằng visited=true
sẽ được hiển thị như một cookie ở đầu trang.
_ "Nếu bạn sử dụng context.xml deployables" _ - Tôi không biết điều đó có nghĩa là gì, nhưng tôi có từng ngữ cảnh riêng lẻ được định nghĩa trong '{jetty}/contexts/{name} .xml' - Tôi không có kiểm tra .xml hoặc bất kỳ thành phần thử nghiệm nào. –
Tôi đã cố gắng áp dụng ví dụ này cho một cấu hình ngữ cảnh hiện có (bằng cách chuyển lệnh Set từ Cấu hình WebAppContext sang thẻ Mới tương ứng trong ví dụ của bạn), nhưng kết quả là một StackOverflowError tại 'org.eclipse.jetty.server.Dispatcher $ ForwardAttributes.setAttribute (Dispatcher.java:410) '([full trace] (http://pastebin.com/vZEvmDRj)) khi cố gắng truy cập'/'- có vẻ như nó hoạt động (bao gồm header set-cookie với response) khi truy cập một tệp cụ thể. –
Tôi không biết đây có phải là lỗi Jetty hay do một số cấu hình sai hoặc một số thứ khác không? Một lời giải thích về cách thức xử lý các công cụ gói này có lẽ sẽ hữu ích. (Cố gắng gỡ lỗi vấn đề, tôi đã lấy bối cảnh cấp cao nhất ra - nó dường như không thay đổi bất cứ điều gì, vì vậy tôi tự hỏi nếu nó cần thiết?) –
- 1. BadImageFormatException: Không thể tải tệp hoặc lắp ráp ... định dạng sai - Chỉ với Ứng dụng Web
- 2. Bạn có kiểm tra sức khỏe trong ứng dụng web hoặc trang web của mình không?
- 3. Cung cấp các tệp từ thư mục ứng dụng web bên ngoài trong Jetty
- 4. Bạn có thể chỉ định số cột trong read.table không?
- 5. Bạn có thể tạo cài đặt dự án cho mỗi người dùng trong Xcode không?
- 6. Có cách nào tiêu chuẩn để xác thực ứng dụng cho API web của bạn không?
- 7. Bạn có thể chỉ định định dạng cho XmlSerialization của một datetime?
- 8. Bạn có thể có thêm .gitignore cho mỗi thư mục trong một repo đơn không?
- 9. Một hoặc nhiều servlet cho mỗi ứng dụng web?
- 10. Có thể chỉ định thông tin đăng nhập proxy trong web.config của bạn không?
- 11. Bạn có thể sử dụng tập tin Settings.Settings cho các trang web ASP.Net không?
- 12. Tôi có thể xóa ứng dụng web trong Chrome không?
- 13. Bạn có thể viết ứng dụng mới cho .NET chưa?
- 14. Bạn có thể tự động gán CFBundleDocumentTypes cho ứng dụng Cocoa của mình không?
- 15. Có nên tạo bảng mới cho mỗi người dùng trên một ứng dụng web không?
- 16. Bạn có thể khởi chạy ứng dụng Máy ảnh gốc từ Ứng dụng web Html 5 không?
- 17. Có thể chỉ định tên lớp cho Spring Framework trong một tệp bên ngoài không?
- 18. Tôi có nên sử dụng Google Web Toolkit cho ứng dụng web mới của mình không?
- 19. Mẹo của bạn để thực hành tốt nhất cho cấu trúc ứng dụng web là gì?
- 20. Chỉ định độ sâu cho mỗi nút
- 21. ứng dụng web gì bạn có biết dùng Webhooks
- 22. Có thể chuyển đổi tệp cấu hình ứng dụng khi chạy cho ứng dụng .NET không?
- 23. Làm cách nào để xác định địa chỉ IP của ứng dụng web (cho JSP)?
- 24. Cách xác định xem ứng dụng có phải là ứng dụng web hay không
- 25. Có Bảng điều khiển quản lý ứng dụng cho Jetty không?
- 26. Tạo một thể hiện log4net.ILog khác cho mỗi ứng dụng
- 27. Bạn có thể chỉ định các số liệu dạng bảng cho các webfont không?
- 28. bạn có thể đặt SSL trên địa chỉ IP hoặc chỉ trên tên miền của máy chủ web không?
- 29. Ứng dụng cục bộ html5 có thể có phiên asp.net không? (ứng dụng web cục bộ cho iPhone)
- 30. Có thể xác định chính xác địa chỉ IP của ứng dụng khách trong java servlet
Có thể có điều gì đó liên quan đến việc này tại https://github.com/eclipse/jetty.project/blob/master/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/ RewriteHandler.java nhưng nó không rõ ràng. –