web-dev-qa-db-fra.com

Comment choisir entre Jersey, Apache Wink et JBoss RESTEasy?

Je viens d'entendre parler de Apache Wink , et je me demandais quelles différences cela avait par rapport à Jersey ou JBoss RESTEasy . Que peut-on faire dans l'un que les deux autres ne peuvent pas?

Nous avons utilisé Jersey pour certains de nos projets internes principalement pour sa simplicité, mais je ne peux pas vraiment comprendre ce qui rend ces deux autres meilleurs que j'envisagerais de changer. Quelqu'un a-t-il des cas d'utilisation pour quelle niche chacun de ces remplissages?

75
Nick Klauer

Implémentations JAX-RS

Jersey

  • Implémentation de référence
  • Généralement le bord le plus avant-gardiste
  • Prend en charge les vraies connexions asynchrones (c'est-à-dire les sockets Web, etc.) via la version Atmosphere ou 2.0.
  • Prend en charge les conteneurs d'injection Spring et standard (par exemple @Inject).
  • Glassfish le regroupe.
  • C'est beaucoup plus modulaire que les autres projets JAX-RS.
  • Il a un coup de pied RI Builder
  • Ne nécessite pas nécessairement de conteneur de servlet.
  • Support Grizzly
  • Support Netty (très tôt).
  • Prise en charge de Swagger
  • Sorte de OAuth 2.0 manquante. Vous devrez utiliser d'autres bibliothèques.
  • Certains support MVC via Viewables
  • Hébergé sur Java.net (un inconvénient car le site est parfois très lent).
  • La licence est basée sur CCDL 1.1 et GPL-v2. Veuillez vous assurer de vérifier les licences Jersey avant de l'utiliser pour un usage commercial

https://jersey.github.io/license.html

RestEasy

Apache Wink (jamais utilisé)

  • Je ne sais pas pourquoi ce projet existe.
  • Soi-disant sa haute performance axée.
  • Il a un client construit sur HttpUrlConnection (ce qui est un moins ... il devrait être enfichable comme Spring RestTemplate ).
  • Fondamentalement, Wink a été développé en interne dans certaines entreprises et ensuite donné à Apache.
  • Nécessite un conteneur de servlet.

Restlet

  • Très puissant mais très compliqué
  • Fournit un support de bas niveau REST
  • Ne nécessite pas de conteneur de servlet

Apache CXF

  • Un support WADL intéressant.
  • Réutiliser et/ou combiner JAX-RS avec JAX-WS
  • Support de sécurité
  • Intégration avec Spring bien que plutôt désagréable
  • Autogénération supposée des talons des clients

Autres systèmes de type RPC

Files d'attente de messages

RPC asynchrone

Mon humble avis

Je sais que l'OP a demandé REST mais s'il s'agit d'une communication interne, envisagez sérieusement d'utiliser soit une file d'attente de messages, soit un autre RPC asynchrone (Finagle) au lieu du traditionnel REST = si vos besoins correspondent à ces systèmes.

S'il doit s'agir d'un HTTP classique REST (externe), je choisirais entre RestEasy ou Jersey comme une grande partie de la part d'esprit est mise dans ces deux projets.

Voir aussi: Rest clients pour Java?

113
Adam Gent

Lorsque vous choisissez l'implémentation à utiliser, gardez cela à l'esprit: si vous essayez de déployer un service Web Jersey sur JBOSS 7.1, cela ne fonctionnera pas. Cette erreur se produira:

Only one JAX-RS Application Class allowed

En effet, REST Easy est fourni avec JBOSS comme implémentation JAX-RS par défaut. Ainsi, JBOSS décidera que c'est l'implémentation que vous souhaitez utiliser et ne chargera pas une autre implémentation JAX-RS (comme Pour résoudre ce problème, vous devez ajouter les lignes suivantes à votre fichier 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>

Lien: https://community.jboss.org/message/7445

15
Tihomir Meščić

Une de mes extensions préférées Jersey est Viewables. Les visualisables vous permettent de lier facilement vos données à une page JSP pour implémenter une véritable architecture Model-View-Controller (MVC):

5
bdoughan

Si vous prévoyez d'utiliser JBoss 7.x, vous devez utiliser RestEasy, car il est intégré à JBoss. Pour utiliser Jersey avec JBoss 7.x, vous devez désactiver RestEasy et c'est compliqué!

0
user1852036