rocktopus
rocktopus

Reputation: 64

How to call .addfilter() while migrating from jetty 7 to jetty 8?

I am in process of migrating jetty 7 to jetty 8,
I am getting this error:

no suitable method found for addFilter(Class,String,int) servletContext.addFilter(JsonTokenFilter.class, "/*", FilterMapping.REQUEST);

What I am trying to do is:

 // servlet context
ServletContextHandler servletContext = new ServletContextHandler( ServletContextHandler.SESSIONS | ServletContextHandler.SECURITY);

// set session manager
SessionHandler sessionHandler = new GatewaySessionHandler(sessionManager);
servletContext.setSessionHandler(sessionHandler);
sessionHandler.addEventListener(new SessionListener());
sessionHandler.addEventListener(new CsrfGuardHttpSessionListener());
sessionManager.setSecureRequestOnly(Utilities.getConfigBoolean("fievel.jetty.secureCookies", true));
sessionManager.setHttpOnly(Utilities.getConfigBoolean(  "fievel.jetty.httpCookies", true));
setSessionSettings();

// add json rpc signal if session token invalid
servletContext.addFilter(JsonTokenFilter.class, "/*", FilterMapping.REQUEST);

The last line is the one that is giving error.

If I refer ServletContextHandler for jetty 8,

addFilter(FilterHolder holder, String pathSpec, EnumSet<DispatcherType> dispatches) 

is ideally the type of code that I should write.

Can anybody give me a clue where am I going wrong?

Upvotes: 0

Views: 611

Answers (1)

tonakai
tonakai

Reputation: 835

i think you should be writing something like this:

servletContext.addFilter(JsonTokenFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST));

since it expects an EnumSet instead of int

I've tried the tutorial from eclipse jetty tutorial

public static void main(String[] args) throws Exception
{
    Server server = new Server(8080);

    ServletContextHandler servletContext = new ServletContextHandler(ServletContextHandler.SESSIONS);
    servletContext.setContextPath("/");
    server.setHandler(servletContext);

    servletContext.addServlet(new ServletHolder(new HelloServlet()),"/*");

    servletContext.addFilter(TestFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST));

    server.start();
    server.join();
}

the output is:

2016-08-10 15:13:58.054:INFO:oejs.Server:jetty-8.1.19.v20160209
TestFilter Init
2016-08-10 15:13:58.186:INFO:oejs.AbstractConnector:Started [email protected]:8080
TestFilter doFilter running

so the filter is registered for sure in this way

Upvotes: 1

Related Questions