2012-03-08 8 views
0

いくつかのサーブレットを持つJetty 6サーバーがプログラムで(XMLなしで)構成されています。 "localhost"からのリクエストに対するこれらのサーブレットの1つのアクセスを制限したいと思います。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()

を見てする必要があります、それが可能2つのServerインスタンスを同じJVM内で実行するのが簡単で、そのうちの1つだけがlocalhostで待ち受けるようにしてください。 This documentationは、XML構成でそれを行う方法を示しています。それを直接Java構成に変換するのは簡単です。

これは、2つの異なるポートでJettyを実行する必要がありますが、それは問題ありませんか?あるいは、Linux上であればiptablesのルールを使うことでそれを隠すことができるかもしれません(または他のUNIX系オペレーティングシステムの同等のもの)

関連する問題