Java REST Implementierung: Jersey vs CXF [geschlossen]

75

Was sind Ihrer Meinung nach die Vor- und Nachteile zwischen diesen beiden Bibliotheken? Welche dieser beiden sind am besten für die Produktionsumgebung geeignet? Übrigens werde ich JSON anstelle von XML verwenden.

Ich würde auch gerne wissen, welche Bibliothek von der Community am meisten unterstützt wird, z. B. Tutorials, Dokumentation.

Dexter
quelle

Antworten:

48

Ich habe beide verwendet, aber für verschiedene Zwecke. CXF hat hervorragend funktioniert, um eine WSDL zu analysieren und Java-POJOs für die Interaktion zu erstellen. Daher ist CXF für clientseitige WSDL-Dienste ziemlich gut geeignet. Ich verwende Jersey derzeit für die serverseitige Implementierung und bin beeindruckt von der Einfachheit, mit RESTful-Diensten mithilfe von Jersey einsatzbereit zu sein.

Da sich Jersey hauptsächlich mit RESTful-Diensten befasst und CXF hauptsächlich (alle?) Mit SOAP handelt, kommt es meiner Meinung nach darauf an, ob Sie mit SOAP oder REST arbeiten und von dort aus den besten Rahmen für den Job bestimmen möchten. Persönlich bin ich mehr im REST-Camp als in SOAP, aber meine Bedürfnisse sind unterschiedlich. Sollte ich mich in einer Situation befinden, in der der Anbieter / Kunde / das Unternehmen, für das ich den Service schreibe, einen Vertrag benötigt, dränge ich möglicherweise immer noch auf REST (und das REST-Äquivalent für vertragsbasierte Services, WADL ), muss es aber wahrscheinlich implementieren Ein SOAP-Dienst. In diesem Fall würde ich zuerst CXF und dann alles andere betrachten.

Persönlich ist Jersey ziemlich gut für ein JAX-RS-Framework von JBoss, schließt RESTEasy jedoch nicht aus . Ich mag beide, aber die Dokumentation für RESTEasy ist besser.

Für CXF ist die Dokumentation in Ordnung, aber ich bin auf Inkonsistenzen beim Umgang mit SSL- und HTTP-Proxies gestoßen, aber es hat sich schließlich bewährt. CXF bietet in Bezug auf diese zusätzlichen Funktionen mehr sofort einsatzbereit, und ich würde sagen, dass RESTEasy die entsprechende Funktionalität für RESTful-Frameworks bietet.

Nick Klauer
quelle
13
CXF ruht auch. Siehe hier: cxf.apache.org/docs/jax-rs.html
HDave
1
Apache CXF bietet drei Methoden zur Verwendung von REST: JAX-RS-, JAX-WS- und HTTP-Bindung.
hotshot309
4

Ich habe nur Jersey verwendet (mit großer Zufriedenheit), daher kann ich keinen wirklichen Vergleich geben. Dinge, die Sie vielleicht berücksichtigen möchten:

  • CXF ist mit SOAP-Stack-Unterstützung ausgestattet, sodass Sie eine Menge SOAP-bezogenes Gewicht einbringen, das Sie beim Erstellen eines RESTful-Systems niemals verwenden werden. (Soweit ich weiß, ist jedoch geplant, die Verpackung aufzuteilen.)
  • Jersey enthält eine Reihe von nicht standardmäßigen Ergänzungen zu JAX-RS, die sehr hilfreich sind. Es gibt auch ein clientseitiges Kernframework, das recht gut gestaltet ist.
  • [Warnung: Schamloser Plug voraus (sorry)]: Ich habe an einem erweiterten clientseitigen Jersey-Framework gearbeitet, das die ordnungsgemäße Verwendung von REST auf der Clientseite fördert und (zumindest IMHO) sehr natürlich zu verwenden ist. Es ist geplant, dies in dieser (oder in der nächsten) Woche bekannt zu geben. Wenn Ihnen die Kundenseite sehr am Herzen liegt, probieren Sie es aus. Persönlich würde ich das als ein großes Argument für Jersey betrachten.

HTH,

Jan.

Jan Algermissen
quelle
In Bezug auf Ihren schamlosen Stecker, wo finde ich möglicherweise Dokumentation / Informationen / etc. darauf, dass ich es vielleicht versuchen könnte?
Nick Klauer
Nick, ich schreibe gerade den einführenden Blog-Beitrag. Paul Sandoz plant heute Morgen einige endgültige Änderungen am Repository. Sobald das erledigt ist, werden wir an die Öffentlichkeit gehen. Sie finden den Blog unter nordsc.com/blog (hoffentlich heute Nachmittag).
Jan Algermissen
Nick, los geht's :-) | Jersey clientseitiges Framework: nordsc.com/blog/?p=439
Jan Algermissen
6
CXF verfügt über separate REST- und SOAP Maven-Artefakte. Wenn Sie also CXF REST ausführen, erhalten Sie nicht alles.
HDave
3

Haben Sie RESTlet in Betracht gezogen ? Es ist ein leistungsstarkes Paket zum schnellen Erstellen von RESTful-Webdiensten. Die Leute hinter RESTlet schreiben auch das RESTlet In Action-Buch, auf das derzeit frühzeitig zugegriffen wird. In den bereits verfügbaren Kapiteln wird REST sehr gut erklärt und detailliert beschrieben, wie Sie eine REST-API entwerfen.

Dafmetal
quelle
2

Wenn Sie sich Gedanken über die Details der Konvertierung einer mit Jersey entwickelten Lösung für CXF machen , hat Glen Mazza eine Sammlung von Jersey-Beispielen veröffentlicht, die auf GitHub auf Apache CXF portiert wurden . Die README-Dateien enthalten für jedes Beispiel Hinweise zu den erforderlichen Änderungen.

David J. Liszewski
quelle
Link ist kaputt können Sie es aktualisieren, wenn es möglich ist
Ankur Loriya
@ AnkurLoriya Ich habe es versucht. Glen hat seinen Blog auf web-gmazza.rhcloud.com verschoben , aber ich konnte diesen Artikel dort nicht finden. Ich werde die Antwort korrigieren.
David J. Liszewski
1

Ich habe Apache CXF für JAX-WS und Jersey für JAX-RS verwendet, daher kann ich keine Kommentare zu CXF und REST abgeben. Mit Jersey war es einfach, ein REST-Beispiel einzurichten. Die Dokumentation war ausreichend. Ich habe RESTEasy nicht verwendet, aber Jersey scheint mehr Traktion und neuere Updates zu haben.

Ein gutes Buch für Implementierungsrichtlinien ist das RESTful Web Services Cookbook.

Blair
quelle