Я разрабатываю проект с использованием AspectJ, где я использую фильтр для HTTP-запросов и ответов. В основном я превращаю этот проект в .jar и использую эту банку в тестовом приложении, где выполняю некоторые тесты безопасности. Когда я объявляю фильтр в тестовом приложении и на его web.xml, он отлично работает, но если я положу его в проект, который я разрабатываю (файл jar), то приложение benchmark не обнаружит его ... I нам сказали, что если вы используете последнюю версию web.xml, вам не нужно объявлять фильтр на web.xml, и он должен автоматически обнаруживать его, но он не работает. Как я могу заставить это работать?Проект, не обнаруживающий фильтр Java
версия Я использую в web.xml это:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
класс фильтра:
пакет main.java.filter;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import main.java.Configuration;
import main.java.HashTableCreation;
/**
* Servlet Filter implementation class MyFilter
*/
@WebFilter("/MyService/*")
public class MyFilter implements Filter
{
/**
* Default constructor.
*/
public MyFilter() {
}
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("###### FILTER before NO DRIVER...");
// HttpServletRequest req = (HttpServletRequest) request;
//
// String loggedIn = (String) req.getSession().getAttribute("login");
//
// if (loggedIn == null)
// {
// req.getRequestDispatcher("notLoggedIn.jsp").forward(request, response);;
// }*/
chain.doFilter(request, response);
System.out.println("###### FILTER after...");
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
System.out.println("Initializing filter...");
}
}
привет, спасибо за ваш ответ заранее. Из того, что я прочитал в сообщении, которое вы mencioned, он должен работать, если фрейм находится в тестовом приложении lib или я ошибаюсь? «... или если они упакованы в файл jar, расположенный в WEB-INF/lib в приложении». Я как-то смутился, как я уже сказал, мне сказали, что с последней версией web.xml он должен автоматически обнаруживать фильтр, я имею в виду, что приложение-испытатель имеет самую последнюю версию web.xml (из-за которой у меня причина в том, что я изменил его), он должен автоматически определять фильтр в файле jar, который я импортирую в тестовый проект. Неужели я ошибаюсь? –
@PedroBento Интересно, может ли это проблема с контейнером сервлета. Вы используете Tomcat, Jetty или что? –
im using wildfly (Jboss) ... –