2010-05-12 8 views
6

Mam scenariusz, w którym mam pojedynczy punkt wejścia Servlet i kolejne serwlety, które żądania są przekazywane do tego ciężkiego przetwarzania.RequestDispatcher forward między instancjami Tomcat

Szukam opcji dystrybucji tego obciążenia i chciałbym wiedzieć, czy jest to możliwe, używając Tomcat lub innej platformy do przesyłania żądań między serwletami znajdującymi się na różnych serwerach przy użyciu konfiguracji typu klastra lub podobnej.

Znalazłem trochę dokumentacji na temat klastrów Serwlety i Tomcat, ale żaden nie wskazuje, czy przekazywanie żądań serwletów jest możliwe z tego, co widzę.

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

Odpowiedz

5

Można rozprowadzać go webapps w środowisku klastrowym Tomcat i dodać crossContext="true" do elementu <Context> z webapps w pytaniu. Oto wyciąg z Tomcat's Context Configuration Reference:

crossContext

Ustaw true jeśli chcesz połączeń w obrębie tej aplikacji do ServletContext.getContext() skutecznie zwrócić dyspozytora żądań do innych aplikacji internetowych działających na tym wirtualnym hoście. Ustaw na false (ustawienie domyślne) w środowiskach świadomych zabezpieczeń, aby zawsze zwracać getContext()null.

W ten sposób można uzyskać żądaną RequestDispatcher następująco:

RequestDispatcher dispatcher = getServletContext().getContext(name).getRequestDispatcher(path);