我正在使用嵌入式Jetty,並且我想在每個請求之前添加一個servlet過濾器以檢查身份驗證。我試過this example,但看起來簽名已經改變。Java/Jetty:如何將過濾器添加到嵌入式Jetty
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.0.4.v20130625</version>
</dependency>
我的碼頭起動看起來是這樣的:
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();
}
}
當我取消對該行
// context.addFilter(AuthenticationFilter.class, "/*", FilterMapping.REQUEST);
我發現簽名已經改變。所以我想稍微回過頭來問一下嵌入式Jetty,如何添加一個在請求開始時運行的過濾器,並且只有滿足某些條件時才允許請求繼續運行?
的AuthenticationFilter類的開頭是這樣的:
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() {}
}
我不明白。 'addFilter'方法有什麼問題? –
嗨Sotirios,感謝您的回覆,它看起來像簽名現在是不同的,第三個參數'FilterMapping.REQUEST'現在需要包裹在一個枚舉集。在我看到的任何地方都沒有例子。 –