2012-03-08 51 views
0

我有一个Jetty 6服务器配置编程(没有XML),它有几个Servlet。 我想限制其中一个Servlet访问来自“localhost”的请求。根据请求源限制Servlet访问与Jetty 6

有没有我可以使用的预先存在的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); 

回答

1

如果你想这样做,你指示的方式,那么你可能需要编写自己的过滤器,并在request.getRemoteAddr()

看但是,它可能在相同的JVM中运行两个Server实例更容易,并且其中一个只能在localhost上侦听。 This documentation展示了如何使用XML配置来做到这一点,将它翻译成直接的Java配置非常容易。

这需要在两个不同的端口上运行Jetty,但这可能对您有好处?或者,如果您使用的是Linux(或者其他类Unix操作系统上的等价物),则可以使用iptables规则来隐藏该规则