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

rav*_*dra 2 jax-rs

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

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

这里验证jax-rs请求意味着预检,后检查和异常处理..(我使用的是泽西罐)

nwa*_*man 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>
Run Code Online (Sandbox Code Playgroud)

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