我正在使用嵌入式Jetty,我想添加一个servlet过滤器以在每个请求之前检查身份验证。我尝试按照以下示例进行操作,但签名似乎已更改。
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.0.4.v20130625</version>
</dependency>
我的Jetty启动器看起来像这样:
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() {}
}
您可能正在寻找EnumSet.of(DispatcherType.REQUEST)
,包括下面的完整示例:
import java.io.IOException;
import java.util.EnumSet;
import javax.servlet.DispatcherType;
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.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletHandler;
public class JettyFilter {
public static void main(final String[] args) throws Exception {
Server server = new Server(8080);
ServletHandler handler = new ServletHandler();
server.setHandler(handler);
handler.addServletWithMapping(HelloServlet.class, "/*");
handler.addFilterWithMapping(HelloPrintingFilter.class, "/*",
EnumSet.of(DispatcherType.REQUEST));
server.start();
server.join();
}
public static class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().println("<h1>Hello SimpleServlet</h1>");
}
}
public static class HelloPrintingFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.print("hello from filter");
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
@Override
public void destroy() {}
}
}
我将从Groovy脚本中启动Jetty Web服务器。Jetty的默认日志记录是stderlog。现在我想配置这个日志记录,但文档中只提到了在使用start时如何进行配置。jar方法启动Jetty。 我如何配置,更具体地说,配置旋转日志文件,与StdErrLog嵌入式码头?
本文向大家介绍Java如何使用Jetty实现嵌入式的Servlet容器,包括了Java如何使用Jetty实现嵌入式的Servlet容器的使用技巧和注意事项,需要的朋友参考一下 最近在项目中遇到关于jetty的问题,所以在网上做一些科普,接下来就给大家做一些分享: Jetty是一个Java实现的开源的servlet容器,它既可以像Tomcat一样作为一个完整的Web服务器和Servlet容器,同时也
问题内容: 有什么方法可以向正在运行的嵌入式Jetty实例添加处理程序?我们已经将一个旧的基于Jetty 6的项目迁移到了Jetty 9,我们需要为我们的插件系统动态添加和删除处理程序… 请参阅下面的示例… 注意:是… 问题答案: 使用Jetty 9.1.0.v20131115,您可以在构造函数上使用标志… 在和调用期间,这将忽略对集合本身的测试。 此行为仅适用于自身,您可以添加单个处理程序,也可
问题内容: 我讨厌问这样一个模糊的问题,但是我很难找到一个简单的例子。这是我到目前为止的内容: 我可以找到的嵌入式Jetty示例始终显示如下内容,以启动运行的Server实例,但我不知道如何实例化WebSocketServlet。 如何创建可以处理WebSocket连接请求的嵌入式服务器? 问题答案: 更新:2013年12月2日 有关带有WebSocket的嵌入式码头的最新示例,请参见: http
问题内容: 我将jetty嵌入到我的应用程序中,并尝试找出如何添加servlet过滤器(用于cookie处理)。Wiki和javadoc的含义不明确,我缺少什么: 我在此找到的唯一信息是一个论坛帖子,建议对此文档进行改进。 问题答案: 更新:对于Jetty版本9.2.2: 原始答案=== 如果您不想使用web.xml,请使用以下命令: 如果确实要使用web.xml而不是addFilter()方法,
目前我正在使用启用TLS 1.2的代码: 现在我正在使用TLS 1.1,并希望将其更改为TLS 1.2。