Sto lavorando con Jetty incorporato e voglio aggiungere un filtro servlet per verificare l'autenticazione prima di ogni richiesta. Ho provato a seguire this example ma sembra che la firma sia cambiata.Java/Jetty: Come aggiungere il filtro al jetty incorporato
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.0.4.v20130625</version>
</dependency>
mio Jetty di avviamento si presenta così:
public class JettyStarter {
public static void main(final String[] args) throws Exception {
Server server = new Server(8080);
final ServletHolder servletHolder = new ServletHolder(new CXFServlet());
final ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
// context.addFilter(AuthenticationFilter.class, "/*", FilterMapping.REQUEST);
context.addServlet(servletHolder, "/platform/*");
context.addEventListener(new ContextLoaderListener());
context.setInitParameter("contextClass", AnnotationConfigWebApplicationContext.class.getName());
context.setInitParameter("contextConfigLocation", Config.class.getName());
server.setHandler(context);
server.start();
server.join();
}
}
Quando il commento dalla riga
// context.addFilter(AuthenticationFilter.class, "/*", FilterMapping.REQUEST);
Trovo che la firma è cambiato. Quindi, voglio fare un piccolo passo indietro e chiedere, con Jetty incorporato, come faccio ad aggiungere un filtro che viene eseguito all'inizio della richiesta e consente alla richiesta di continuare solo se viene soddisfatta una condizione?
L'inizio della classe AuthenticationFilter si presenta così:
import javax.servlet.*;
import java.io.IOException;
public class AuthenticationFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {}
@Override
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {}
@Override
public void destroy() {}
}
Non capisco. Cosa c'è di sbagliato nel metodo 'addFilter'? –
Ciao Sotirios, grazie per la risposta, sembra che la firma sia ora diversa e il terzo argomento 'FilterMapping.REQUEST' ora deve essere racchiuso in un enum set. Non ci sono esempi su questo ovunque che abbia visto ancora. –