2

jax-rs アプリケーションにいくつかのリソースがあり、javax.ws.rs.Path によって注釈が付けられたリソースに入る前に、jax-rs リクエストを検証したいと考えています。では、リソースのハンドラーまたはフィルターを作成するにはどうすればよいですか。非常に多くのサイトを検索しました。彼らの提案は、プロキシまたはサーブレット フィルターを使用することです。プロキシまたはサーブレット フィルターを使用せずに、ハンドラー/フィルターを作成できますか?

JAX-WS と同じように SOAPHandler は SOAP リクエストに使用でき、同じように jax-rs リクエストを検証するためのハンドラーがあります。

ここで jax-rs リクエストの検証とは、事前チェック、事後チェック、および例外処理を意味します.. (私はジャージー jar を使用しています)

4

1 に答える 1

10

Jersey が提供する ContainerResponseFilter または ContainerRequestFilter を実装する Filter を作成する必要があります。次に、web.xml で次のように定義します。

<servlet>
    <servlet-name>MY API</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
        <param-value>com.example.filters.ReqFilter</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
        <param-value>com.example.filters.RespFilter</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>MY API</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

http://jersey.java.net/nonav/apidocs/1.6/jersey/com/sun/jersey/spi/container/ContainerRequestFilter.html

http://jersey.java.net/nonav/apidocs/1.6/jersey/com/sun/jersey/spi/container/ContainerResponseFilter.html

于 2012-10-18T16:22:50.710 に答える