web-dev-qa-db-fra.com

Java REST implémentation: Jersey vs CXF

Quels sont selon vous les avantages/inconvénients de ces deux bibliothèques? Lequel de ces deux est le mieux adapté à l'environnement de production? Soit dit en passant, j'utiliserai JSON au lieu de XML.

J'aimerais également savoir quelle bibliothèque est la plus soutenue par la communauté, par exemple tutoriels, documentation.

75
dexter

J'ai utilisé les deux, mais à des fins différentes. CXF a très bien fonctionné pour analyser un WSDL et créer Java POJO avec lesquels interagir, donc CXF est assez bon pour les services WSDL côté client. J'utilise actuellement Jersey pour l'implémentation côté serveur et je suis impressionné par la simplicité de mise en service avec les services RESTful à l'aide de Jersey.

Comme Jersey est principalement consacré aux services RESTful et CXF traite principalement (tous?) Avec SOAP, je pense que cela revient à savoir si vous voulez travailler avec SOAP ou REST, et déterminer le meilleur cadre pour Personnellement, je suis plus dans le camp REST que SOAP, mais mes besoins sont différents. Dois-je être dans une situation où le vendeur/client/entreprise pour qui j'écris le service a besoin d'une sorte de contrat, je pourrais toujours pousser pour REST (et l'équivalent de REST pour les services contractuels, WADL ) , mais serait probablement nécessaire pour implémenter un service SOAP, auquel cas je regarderais CXF en premier et tout le reste en second.

Personnellement, Jersey est assez 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 OK, mais je suis tombé sur des incohérences dans la façon dont j'avais besoin de gérer les proxy SSL et HTTP, mais cela a finalement fonctionné. CXF fournit plus de fonctionnalités sur ces fonctionnalités supplémentaires, et je dirais que RESTEasy fournirait les fonctionnalités équivalentes pour les frameworks RESTful.

47
Nick Klauer

Je n'ai utilisé que du Jersey (avec une grande satisfaction), donc je ne peux pas donner une vraie comparaison. Éléments à considérer:

  • CXF est livré avec SOAP support de pile 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 autant que possible) comme je sais, cependant)
  • Jersey est livré avec un certain nombre d'ajouts non standard à JAX-RS qui sont très utiles. Il existe également un framework de base côté client qui est très bien conçu.
  • [Avertissement: Shameless plug ahead (désolé)]: J'ai travaillé sur un framework étendu côté client Jersey qui encourage une bonne utilisation de REST côté client et est (à mon humble avis au moins) très naturel Il est prévu de l'annoncer cette semaine (ou la semaine prochaine) - si vous vous souciez beaucoup du côté client, essayez-le. Personnellement, je considérerais que c'est un énorme argument pro-Jersey.

HTH,

Jan

4
Jan Algermissen

Avez-vous pensé à RESTlet ? Il s'agit d'un package puissant pour créer rapidement des services Web RESTful. Les personnes derrière RESTlet écrivent également le livre RESTlet In Action qui est actuellement en accès anticipé. Les chapitres qui sont déjà disponibles expliquent très bien REST et expliquent en détail comment concevoir une api REST).

3
dafmetal

Si vous êtes préoccupé par les détails de la conversion d'une solution développée avec Jersey pour l'exécuter [~ # ~] cxf [~ # ~] , Glen Mazza a publié une collection d'échantillons Jersey portés sur Apache CXF sur GitHub . Les fichiers README contiennent des notes pour chaque échantillon concernant les modifications nécessaires apportées.

2
David J. Liszewski

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

Un bon livre pour les directives d'implémentation est le livre de recettes des services Web RESTful.

1
Blair