Tomcat не может получить ServletContext другого веб-приложения - PullRequest
5 голосов
/ 18 января 2010

Я использую Tomcat 6 и у меня есть два веб-приложения. Один - это webapp1, а другой - webapp2. Из фильтра внутри webapp2 я пытаюсь получить доступ к другому webapp i.e webapp1. Код моего фильтра выглядит примерно так:

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

Есть идеи, что я делаю не так? Я всегда получаю нулевое значение в качестве значения othercontext.

Ответы [ 2 ]

9 голосов
/ 18 января 2010

Установите crossContext = "true" в файле server.xml.См. документацию для контейнера контекста.

Установите значение true, если вы хотите, чтобы вызовы в этом приложении вызывали ServletContext.getContext () для успешного возврата диспетчера запросов для других работающих веб-приложений.на этом виртуальном хосте.Установите значение false (по умолчанию) в защищенных средах, чтобы getContext () всегда возвращал ноль.

0 голосов
/ 22 ноября 2017

Работал немного по-другому для Apache Tomcat 8.0.27 . Вместо того, чтобы изменить server.xml, мне потребовалось обновить файл context.xml tomcat с атрибутом crossContext тега Context.

...