Hemos creado algunos servicios web REST (jax-rs) usando Apache CXF. Devuelven una respuesta JSON.¿Filtro de servlet frente a interceptor CXF para modificar el contenido de solicitud y respuesta?
Ahora necesito modificar algunos de los parámetros de solicitud y el contenido de la respuesta. (Básicamente, necesitamos codificar/encriptar algunos de los datos que devuelve el servicio, y decodificar/descifrar los mismos datos cuando se utiliza como parámetro en una llamada de servicio posterior).
Parece que tengo al menos 4 opciones aquí:
- utilizar un filtro de servlet
- Utilice un interceptor de CXF
- uso a JAX-RS filtrar
- no utilice ningún patrón particular, y realizar la codificación/decodificación en el real servicio de lógica.
He usado Servlet Filters antes, y entiendo exactamente cómo modificar los parámetros de solicitud y el cuerpo de la respuesta, así que me inclino por eso. Sin embargo, estoy abierto a usar un interceptor CXF o un filtro JAX-RS si esa es la forma más "correcta" de resolver esto cuando se usa CXF. Pero basado en la documentación, realmente no entiendo cómo para hacer esto. Por ejemplo, ¿uso el método setContent del objeto Message para cambiar la respuesta JSON? ¿Cuál es el parámetro de formato en ese caso, solo String.class?
Sería bueno si pudiera explicar la razón detrás de hacer su elección. – andthereitgoes
tengo la misma pregunta, si CXF ha proporcionado el interceptor, ¿por qué todavía necesita tener el filtro? – Chailie
@Chailie - no había una razón fuerte para usar el filtro JAX-RS sobre CXF Interceptor, creo que la razón principal por la que lo elegí fue que era específico de JAX-RS, pero un Interceptor CXF también habría funcionado. (Sin embargo, habría requerido la misma cantidad de codificación personalizada). Tenga en cuenta que JAX-RS 2.0 ya está disponible, por lo que los filtros e interceptores JAX-RS se han convertido en parte de la especificación y definitivamente serían el camino a seguir con la tecnología actual. tecnología. –