如何在REST(Jersey)中创建用于包装JAX-RS请求的筛选器或处理程序? [英] How can i create Filter or Handler in REST(Jersey) for wrapping JAX-RS Requests?
问题描述
我的jax-rs应用程序中有一些资源,我想在jax-rs请求进入javax.ws.rs.Path注释的资源之前对其进行验证.因此,如何为我的资源创建处理程序或过滤器.我已经搜索了很多站点.他们的建议是使用代理或servlet过滤器.不使用代理或Servlet过滤器,我可以创建处理程序/过滤器吗?
I have some resources in my jax-rs application i want to validate jax-rs request before it enters into the resource annotated by javax.ws.rs.Path. so, how can i create handler or filter for my resources .I have searched so many sites. their suggestions are use proxy or servlet filters . without using proxy or servlet filters can i create handler/ filter ?
就像在JAX-WS中一样,SOAPHandler可用于soap请求,以同样的方式,也有用于验证jax-rs请求的任何处理程序.
Just like in JAX-WS SOAPHandler is available for soap request ,in the same way is there any handlers for validating jax-rs request.
此处验证jax-rs请求意味着进行预检查,后检查和异常处理. (我正在使用球衣瓶)
Here Validating jax-rs request means pre-checking, post checking and Exception handling.. (I am using jersey jars)
推荐答案
您需要创建一个实现由Jersey提供的ContainerResponseFilter或ContainerRequestFilter的过滤器.然后在您的web.xml中按如下方式定义它:
You need to create a Filter that implements the ContainerResponseFilter or ContainerRequestFilter provided by Jersey. Then in your web.xml you define it like so:
<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>
这篇关于如何在REST(Jersey)中创建用于包装JAX-RS请求的筛选器或处理程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!