2010-01-18 13 views
5

Używam tomcat 6 i mam dwa webappy. Jednym z nich jest webapp1, a drugim webapp2. Z filtru wewnątrz webapp2 próbuję uzyskać dostęp do innej aplikacji internetowej, np. Webapp1. Mój kod filtra jest mniejszy niżTomcat nie może uzyskać ServletContext innej aplikacji internetowej

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 

    HttpServletRequest req = (HttpServletRequest)request; 
    System.out.println("requeted path = " + req.getRequestURI()); 

    ServletContext othercontext = confg.getServletContext().getContext("/webapp1"); 
    RequestDispatcher dispatcher = othercontext.getRequestDispatcher(req.getRequestURI()); 
    dispatcher.forward(request, response); 
    chain.doFilter(request, response); 
} 

Jakąkolwiek Pomysł, co robię źle? Zawsze uzyskuję wartość zerową jako wartość innego kontekstu.

Odpowiedz

9

Ustawienie crossContext = "true" w pliku server.xml. Zobacz documentation dla kontenera kontekstowego.

ustawiona na wartość true, jeśli chcesz połączeń w Ta aplikacja do ServletContext.getContext(), aby powrócić do powodzeniem prośba dyspozytora dla innych aplikacji internetowych uruchomionych na tym wirtualnym hoście. Ustawiony na false (domyślnie) w środowiskach świadomego bezpieczeństwa , aby getContext() zawsze zwracał wartość null.

0

Pracował w nieco inny sposób dla Apache Tomcat 8.0.27. Zamiast zmieniać jego server.xml, zaktualizowałem plik tomcat o numerze context.xml za pomocą atrybutu crossContext z tagiem Context.

Powiązane problemy