traduccion - ¿Cómo elegir entre Jersey, Apache Wink y JBoss RESTEasy?
resteasy maven (4)
Implementaciones JAX-RS
Jersey
- Implementación de referencia
- Por lo general, el borde más vanguardista
- Admite conexiones asíncronas verdaderas (es decir, sockets web, etc.) a través de la versión Atmosphere o 2.0.
- Tiene soporte para Spring y contenedores de inyección estándar (es decir, @Inject).
- Glassfish lo agrupa.
- Es mucho más modular que los otros proyectos JAX-RS.
- Tiene un creador de URI asqueroso
- No requiere necesariamente un contenedor de servlets.
- Soporte de Grizzly
- Soporte de Netty (muy temprano).
- Apoyo Swagger
- Tipo de OAuth 2.0 que falta. Tendrás que usar otras bibliotecas.
- Algún soporte de MVC a través de Viewables
- Alojado en java.net (un menos ya que el sitio es terriblemente lento a veces).
- Las licencias se basan en CCDL 1.1 y GPL-v2. Por favor, asegúrese de verificar las licencias de Jersey antes de usarlo para uso comercial
https://jersey.github.io/license.html
Estar tranquilo
- Gran parte de los soportes anteriores pero más notables ven tecnologías (ver HTMLEasy )
- Tiene soporte de conexión asíncrono
- Soporte de caché
- Soporte de EJB (si estás en esa mierda)
- JBoss lo agrupa (creo)
- Soporte de Netty
- Posiblemente la mejor integración de Spring (controlador MVC) .
- Soporte de Early Swagger
- Más soporte de seguridad que incluye soporte temprano de OAuth 2.0
Apache Wink (nunca lo usó)
- No tengo idea de por qué existe este proyecto.
- Supuestamente su alto rendimiento se enfoca.
- Tiene un cliente construido sobre HttpUrlConnection (que es un menos ... debe ser conectable como Spring RestTemplate ).
- Básicamente, Wink se desarrolló internamente en algunas empresas y luego se le dio a Apache.
- Requiere un contenedor de servlet.
Restlet
- Muy poderoso pero muy complicado
- Proporciona un poco de apoyo REST de bajo nivel
- No requiere un contenedor de servlet
Apache CXF
- Algún soporte WADL interesante.
- Reutilizar y / o combinar JAX-RS con JAX-WS
- Soporte de seguridad
- Integración con primavera aunque desagradable
- Supuesta autogeneración de los talones del cliente
Otros sistemas similares a RPC
Colas de mensajes
- RabbitMQ
- ActiveMQ
RPC asíncrono
- Finagle - de Twitter.
- msgpack-rpc
Mi humilde opinión
Sé que OP solicitó REST, pero si esto es para comunicación interna, considere seriamente utilizar una cola de mensajes o algún otro RPC asincrónico (Finagle) en lugar del REST tradicional si sus requisitos coinciden con esos sistemas.
Si debe ser un clásico RESTO HTTP (externo), elegiría entre RestEasy o Jersey ya que la mayor parte de la capacidad mental se coloca en esos dos proyectos.
Ver también: ¿ clientes de reposo para Java?
Acabo de enterarme de Apache Wink , y me preguntaba qué diferencias tenía en comparación con Jersey o JBoss RESTEasy . ¿Qué se puede hacer en uno que los otros dos no pueden?
Hemos usado Jersey para algunos de nuestros proyectos internos principalmente por su simplicidad, pero realmente no puedo entender qué hace que estos otros dos sean mejores que consideraría cambiar. ¿Alguien tiene casos de uso para cada nicho de cada uno de estos?
Al elegir la implementación que se va a utilizar, tenga esto en cuenta: si intenta implementar un servicio web Jersey en JBOSS 7.1, no funcionará. Este error ocurrirá:
Only one JAX-RS Application Class allowed
Esto se debe a que REST Easy viene incluido con JBOSS como la implementación predeterminada de JAX-RS. Entonces, JBOSS decidirá que esa es la implementación que desea usar y no cargará otra implementación de JAX-RS (como Jersey). Para solucionar esto, debe agregar las siguientes líneas a su archivo web.xml:
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.providers</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.resources</param-name>
<param-value>false</param-value>
</context-param>
Si va a utilizar JBoss 7.x, debe utilizar RestEasy, porque está integrado en JBoss. Para usar Jersey con JBoss 7.x, tiene que deshabilitar RestEasy ¡y es complicado!
Una de mis extensiones favoritas de Jersey es Viewables. Las visualizaciones le permiten vincular sus datos fácilmente a una página JSP para implementar una verdadera arquitectura Modelo-Vista-Controlador (MVC):