我在jax-rs应用程序中有一些资源我希望在jax-rs请求进入由javax.ws.rs.Path注释的资源之前验证它。那么,我怎样才能为我的资源创建处理程序或过滤器。我搜索了很多网站。他们的建议是使用代理或servlet过滤器。如果不使用代理或servlet过滤器,我可以创建处理程序/过滤器吗?
就像在JAX-WS中SOAPHandler可用于soap请求一样,有同样的方法可以验证jax-rs请求。
这里验证jax-rs请求意味着预检查,发布检查和异常处理。 (我正在使用球衣罐)
答案 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>