Implémentation Java REST: Jersey vs CXF

Selon vous, quels sont les avantages / inconvénients de ces deux bibliothèques? Lequel des deux convient le mieux à l’environnement de production? J’utiliserai d’ailleurs JSON au lieu de XML.

J’aimerais aussi savoir quelle bibliothèque est la plus prise en charge par la communauté, par exemple des tutoriels, de la documentation.

J’ai utilisé les deux, mais à des fins différentes. CXF a parfaitement fonctionné pour parsingr un WSDL et créer des POJO Java avec lesquels interagir, de sorte que CXF est très utile pour les services WSDL côté client. J’utilise actuellement Jersey pour une implémentation côté serveur et je suis impressionné par la simplicité de mise en place avec les services RESTful utilisant Jersey.

Comme Jersey est principalement consacré aux services RESTful et que CXF traite principalement (tout?) Avec SOAP, je pense que cela dépend si vous voulez travailler avec SOAP ou REST, et déterminer le meilleur cadre pour le travail à partir de là. Personnellement, je suis plus dans le camp REST que SOAP, mais mes besoins sont différents. Si je devais être dans une situation où le fournisseur / client / entreprise que j’écris sur le service répondait à des besoins, je pourrais toujours demander REST (et l’équivalent de REST pour les services contractuels, WADL ), mais un service SOAP, auquel cas je regarderais d’abord CXF et tout le rest.

Personnellement, Jersey est plutôt bon pour un framework JAX-RS, mais n’excluez pas RESTEasy , par JBoss. J’aime les deux, mais la documentation de RESTEasy est meilleure.

Pour CXF, la documentation est correcte, mais je me suis heurté à des incohérences dans la manière dont je devais gérer les proxys SSL et HTTP, mais cela a fini par s’arranger. CXF fournit plus de fonctionnalités concernant ces fonctionnalités supplémentaires et je dirais que RESTEasy fournirait la fonctionnalité équivalente pour les frameworks RESTful.

Je n’ai utilisé que Jersey (avec une grande satisfaction), donc je ne peux pas faire de comparaison réelle. Choses que vous pourriez vouloir considérer:

  • CXF est intégré à la prise en charge de la stack SOAP afin que vous apportiez beaucoup de poids lié à SOAP que vous n’utiliserez jamais lorsque vous construirez un système RESTful. (Il est prévu de diviser l’emballage à ma connaissance)
  • Jersey est livré avec un certain nombre d’ajouts non standard à JAX-RS qui sont très utiles. Il y a aussi un cadre principal côté client qui est conçu assez bien.
  • [Avertissement: plug-in sans vergogne (désolé)]: J’ai travaillé sur un framework côté client Jersey qui encourage l’utilisation correcte de REST côté client et est (IMHO du moins) très naturel à utiliser. Il est prévu de l’annoncer cette (ou prochaine) semaine – si vous vous souciez beaucoup du client, essayez-le. Personnellement, je considérerais cela comme un énorme argument pro-Jersey.

HTH,

Jan

Avez-vous considéré RESTlet ? C’est un package puissant pour construire rapidement des services Web RESTful. Les personnes derrière RESTlet écrivent également le livre RESTlet In Action qui est actuellement en access rapide. Les chapitres déjà disponibles expliquent très bien REST et expliquent en détail comment concevoir une API REST.

Si vous êtes préoccupé par les détails de la conversion d’une solution développée avec Jersey pour s’exécuter sur CXF , Glen Mazza a publié une collection d’échantillons de Jersey portés sur Apache CXF sur GitHub . Les fichiers README ont des notes pour chaque échantillon concernant les modifications nécessaires apscopes.

J’ai utilisé Apache CXF pour JAX-WS et Jersey pour JAX-RS. Je ne peux donc pas commenter sur CXF et REST. Il était facile de créer un exemple REST en utilisant Jersey. La documentation était adéquate. Je n’ai pas utilisé RESTEasy mais Jersey cherche à avoir plus de traction et des mises à jour plus récentes.

Un bon livre pour les directives d’implémentation est RESTful Web Services Cookbook.