2010-01-18 22 views
5

Estoy usando tomcat 6 y tengo dos aplicaciones web. Uno es webapp1 y el otro es webapp2. Desde un filtro dentro de webapp2, estoy tratando de acceder a la otra aplicación web, es decir, webapp1. Mi Código de filtro es algo así como más adelanteTomcat no puede obtener el ServletContext de otra aplicación web

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); 
} 

alguna idea de lo que estoy haciendo mal? Siempre obtengo nulo como el otro valor de contexto.

Respuesta

9

Establezca crossContext = "true" en server.xml. Consulte documentation para el contenedor de contexto.

establece en true si desea que las llamadas dentro de esta aplicación para ServletContext.getContext() para volver con éxito un despachador de solicitud para otras aplicaciones web que se ejecutan en este host virtual. Establecido en falso (predeterminado) en entornos de seguridad conscientes, para hacer getContext() siempre devuelve nulo.

0

Funcionó de una manera un poco diferente para Apache Tomcat 8.0.27. En lugar de cambiar su server.xml, me llevó a actualizar el archivo context.xml de tomcat con el atributo crossContext de la etiqueta Context.

Cuestiones relacionadas