Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Jetty 6基于请求来源限制Servlet访问_Java_Servlets_Jetty_Servlet Filters - Fatal编程技术网

Java 使用Jetty 6基于请求来源限制Servlet访问

Java 使用Jetty 6基于请求来源限制Servlet访问,java,servlets,jetty,servlet-filters,Java,Servlets,Jetty,Servlet Filters,我有一个Jetty6服务器,它是以编程方式配置的(没有XML),它有几个servlet。 我想将其中一个Servlet的访问限制为来自“localhost”的请求 是否有一个预先存在的码头过滤器可供我使用 如果否,我如何创建自己的筛选器来执行此操作 当前代码: Server server = new Server(httpPort); Context ctx = new Context(server, "/"); ctx.addServlet(new ServletHolder(someHttp

我有一个Jetty6服务器,它是以编程方式配置的(没有XML),它有几个servlet。 我想将其中一个Servlet的访问限制为来自“localhost”的请求

是否有一个预先存在的码头过滤器可供我使用

如果否,我如何创建自己的筛选器来执行此操作

当前代码:

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);

如果您想按照您指定的方式执行,那么您可能需要编写自己的筛选器,并查看
request.getRemoteAddr()

但是,在同一JVM中运行两个
服务器
实例并让其中一个只监听
本地主机
可能更容易。演示了如何使用XML配置实现这一点,将其转换为直接Java配置非常容易

这需要在两个不同的端口上运行Jetty,但这可能适合您?或者,如果您使用的是Linux(或其他类似unix的操作系统上的等效系统),则可以通过使用iptables规则来隐藏这一点