2

我的 jax-rs 应用程序中有一些资源,我想在它进入由 javax.ws.rs.Path 注释的资源之前验证 jax-rs 请求。那么,我如何为我的资源创建处理程序或过滤器。我搜索了这么多网站。他们的建议是使用代理或 servlet 过滤器。如果不使用代理或 servlet 过滤器,我可以创建处理程序/过滤器吗?

就像在 JAX-WS 中 SOAPHandler 可用于肥皂请求一样,同样有任何处理程序用于验证 jax-rs 请求。

这里验证 jax-rs 请求意味着预检查、后检查和异常处理..(我正在使用 jersey jars)

4

1 回答 1

10

您需要创建一个过滤器来实现 Jersey 提供的 ContainerResponseFilter 或 ContainerRequestFilter。然后在您的 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 回答