如何在REST(Jersey)中创建过滤器或处理程序以包装JAX-RS请求?

时间:2012-10-15 10:15:19

标签: jax-rs

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

就像在JAX-WS中SOAPHandler可用于soap请求一样,有同样的方法可以验证jax-rs请求。

这里验证jax-rs请求意味着预检查,发布检查和异常处理。    (我正在使用球衣罐)

1 个答案:

答案 0 :(得分:10)

您需要创建一个Filter来实现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