2

jersey サーブレットへのすべてのリクエストをフィルタリングしたいので、次のようにします。

<filter-mapping>
   <filter-name>jersey</filter-name>
   <url-pattern>*</url-pattern>
</filter-mapping>

残念ながら、これには開発コンソール (http://localhost:8888/_ah/admin) をキャッチするという副作用があります。

「/_ah/*」に一致するパスをフィルターから除外する方法はありますか?

それとも、同じことを達成するためのより良い方法でしょうか?

4

2 に答える 2

4

@adarshr の提案のおかげで、特定のパスをスキップできるように、Jersey フィルター サーブレットの拡張を検討し始めました。その後、init パラメータとして無視するパスが既にサポートされていることに気付きました。

<init-param>
    <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
    <param-value>/(js|css|(WEB-INF/jsp)|_ah)/.*</param-value>
</init-param>

(私はそれを読まずにどこかからコードを貼り付けた後、すでにそれを使用していました!)

于 2012-05-17T11:16:30.933 に答える
1

すべてのフィルター マッピングを構成するために使用できるサーブレットを用意することをお勧めします。したがって、web.xml では正規表現マッピングが許可されていないため、サーブレットはすべてのクエリを処理し、それに応じて再ルーティングします。

Google Guice の guiceServlet を使用して同じことを行います。

次にconfigureServlets、次のことを行います。

  serveRegex("/(?!_ah).*").with(JerseyGateway.class);

ここで見ることができるトピックに関する多くの提案があります。

于 2012-05-17T11:08:19.083 に答える