2012-03-08 59 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規則來隱藏該規則