2010-05-12 32 views
6

Tôi có một kịch bản mà tôi có Servlet điểm vào đơn và các Servlet tiếp theo mà các yêu cầu được chuyển tiếp đến đó thực hiện xử lý nặng.RequestDispatcher chuyển tiếp giữa các phiên bản Tomcat

Tôi đang xem xét các tùy chọn để phân phối tải này và tôi muốn biết nếu có thể sử dụng Tomcat hoặc nền tảng khác để chuyển tiếp các yêu cầu giữa Servlets đang ngồi trên các máy chủ khác nhau bằng cách sử dụng cấu hình kiểu cụm hoặc tương tự.

Tôi đã tìm thấy một số tài liệu về phân cụm Servlets và Tomcat nhưng không có chỉ ra nếu Servlet yêu cầu chuyển tiếp có thể từ những gì tôi có thể nhìn thấy.

http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/web-tier/web-tier5.html

http://tomcat.apache.org/tomcat-5.5-doc/cluster-howto.html

Trả lời

5

Bạn có thể phân phối nó trên webapps trong một môi trường Tomcat nhóm và thêm crossContext="true" tới phần tử <Context> của webapps trong câu hỏi. Dưới đây là một trích Tomcat's Context Configuration Reference:

crossContext

Set để true nếu bạn muốn cuộc gọi trong ứng dụng này để ServletContext.getContext() để trở thành một điều phối yêu cầu cho các ứng dụng web khác chạy trên máy chủ ảo này. Đặt thành false (mặc định) trong môi trường bảo mật có ý thức, để làm cho getContext() luôn trả lại null.

Bằng cách này bạn có thể có được những mong muốn RequestDispatcher như sau:

RequestDispatcher dispatcher = getServletContext().getContext(name).getRequestDispatcher(path); 
Các vấn đề liên quan