我有一个以编程方式配置的Jetty 6服务器(没有XML),它有几个Servlet。 我想限制其中一个Servlet访问来自" localhost"的请求。
我可以使用预先存在的Jetty过滤器吗?
如果不是,我如何创建自己的过滤器来执行此操作?
当前代码:
Server server = new Server(httpPort);
Context ctx = new Context(server, "/");
ctx.addServlet(new ServletHolder(someHttpServlet), "/servlet1/*");
ctx.addServlet(new ServletHolder(someOtherHttpServlet), "/servlet2/*");
ctx.addFilter(new FilterHolder(myFilterHere), "/servlet2/*", Context.ALL);
答案 0 :(得分:1)
如果您想按照指示的方式进行操作,那么您可能需要编写自己的过滤器并查看request.getRemoteAddr()
但是,在同一个JVM中运行两个Server
实例并让其中一个实例只监听localhost
可能更容易。 This documentation显示了如何使用XML配置执行此操作,将其转换为直接Java配置非常容易。
这需要在两个不同的端口上运行Jetty,但这对您来说可能没问题?或者你可以通过使用iptables规则隐藏它,如果你在Linux上(或类似其他类Unix操作系统)