Фильтр жалоб Tomcat - это `java.lang.ClassNotFoundException`, когда на самом деле он существует - PullRequest
0 голосов
/ 11 июня 2018

Я создал пользовательский фильтр и добавил запись в web.xml:

<filter>
  <filter-name>Content Security Policy</filter-name>
  <filter-class>net.myapp.security.csp.CSPFilter</filter-class>
  <init-param>
    <param-name>CONTENT_SECURITY_POLICY</param-name>
    <param-value>some_policy:here</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>Content Security Policy</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

Когда я проверяю путь WEB-INF/classes/net/myapp/security/csp, файл класса существует.Это также верно, когда я unzip файл WAR.Тем не менее Tomcat по-прежнему жалуется в файле журнала, что:

SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.filterStart Фильтр запуска исключения [Политика безопасности содержимого] java.lang.ClassNotFoundException.в org.apache.catalina.core.DefaultInstanceManager.loadClass (DefaultInstanceManager.java:544) в org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged (DefaultInstanceManager.java:5an.Inst.Manager.cat.(DefaultInstanceManager.java:150) в org.apache.catalina.core.ApplicationFilterConfig.getFilter (ApplicationFilterConfig.java:264) в org.apache.catalina.core.ApplicationFilterConfig. (ApplicationFilterConfig.jalgap: 8).core.StandardContext.filterStart (StandardContext.java:4637) в org.apache.catalina.core.StandardContext.startInternal (StandardContext.java:5282) в org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:150) в org.apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.java:1421) в org.apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.java:1411) в java.base / java.util.concurrent.FutureTask..run (FutureTask.java:264) в java.base / java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167) в java.base / java.util.concurrent.ThreadPoolExecutor $ Threader.runecec (: 641) в java.base / java.lang.Thread.run (Thread.java:844)

Другие шаги, которые я пробовал:

  • Очистить сборку с помощьюmaven
  • Удалил файл WAR и другие файлы в Tomcat/webapps и повторил попытку.
  • Проверены права доступа к файлу.

CSPFilter.java:

package net.myapp.security.csp;

import java.io.IOException;
import java.util.StringTokenizer;
import javax.servlet.*;
import javax.servlet.http.*;

public class CSPFilter
  implements Filter {

  private FilterConfig config;
  private String csp_;

  public void init(FilterConfig filterConfig) throws ServletException {
    this.config = filterConfig;
    csp_ = config.getInitParameter("CONTENT_SECURITY_POLICY");
  }

  @Override
  public void doFilter(ServletRequest request, ServletResponse response,
                       FilterChain chain) throws IOException, ServletException {
    HttpServletResponse httpResponse = (HttpServletResponse) response;
    httpResponse.setHeader("Content-Security-Policy", csp_);

    chain.doFilter(request, response);
  }

  @Override
  public void destroy(){}
}

Редактировать:

Уточнить: Фильтр работает! Но, Tomcat по-прежнему жалуется, что класс не найден.Из-за этого Context также не загружается.

19-Jun-2018 12: 11: 45.198 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal Один или несколько фильтров не удалось запустить.Полная информация будет найдена в соответствующем файле журнала контейнера

19-Jun-2018 12: 11: 45.199 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal Context [/ dev] сбой запуска из-за предыдущих ошибок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...