Boa tarde,
Estou reproduzindo o projeto do estudo utilizando as seguintes configurações:
IDE: IntelliJ Java 8 Tomcat 8
Anotei o meu Filter como sugerido, utilizando @WebFilter(urlPatterns = "/entrada"), porém, gerou o log abaixo no tomcat ao tentar fazer o deploy da aplicação:
21-Jun-2022 15:10:45.996 GRAVE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.filterStart Exception starting filter br.com.gerenciador.controller.filters.MonitoramentoFilter
java.lang.AbstractMethodError
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4700)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5340)
...
Meu web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<welcome-file-list>
<welcome-file>/views/login.jsp</welcome-file>
</welcome-file-list>
<session-config>
<!-- O container remove a sessão após 10 minutos sem utilização da aplicação. -->
<session-timeout>10</session-timeout>
</session-config>
</web-app>
Servlet Version:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
E, por último, o meu Filter:
@WebFilter(urlPatterns = "/entrada")
public class MonitoramentoFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
long antes = System.currentTimeMillis();
String acao = request.getParameter("acao");
// Continua com a execução. Se o recurso não for chamado, a execução é interrompida.
chain.doFilter(request, response);
long depois = System.currentTimeMillis();
System.out.println(acao + " - Tempo de execução: " + (depois - antes));
}
}
Alguma ideia do que pode estar acontecendo?