2009-11-12 5 views
0

Je suis assez nouveau dans le monde de Java et assez impressionné par la beauté du choix entre des dizaines de bibliothèques faisant plus ou moins la même chose, ou pas.Jetée vs CXF/Lequel choisir?

Donc, avec Jetty et CXF. Je suis à la recherche d'une pile de services Web prenant en charge un large éventail de transports et de protocoles. J'ai eu l'impression que CXF est le projet le plus récent et serait le choix préféré pour les nouveaux projets de logiciels. Surtout quand il s'agit d'applications qui doivent parler de différents protocoles et normes comme WS- *. Pouvez-vous donner votre opinion sur la façon dont ces cadres diffèrent les uns des autres?

Lequel a un support plus large pour différents protocoles et standards?

Lequel préférez-vous concernant sa conception, par ex. comment ils cachent les aspects de transport, d'authentification, d'autorisation, de sérialisation à partir de la logique de l'application?

Tout type de réponse est la bienvenue!

Cheers, Alex

Répondre

5

Il y a un malentendu ici, Jetty et CXF sont comme des pommes et des oranges, cela n'a aucun sens de les comparer. L'un est un moteur de servlet léger, l'autre est une pile de services Web. Si vous recherchez une pile de services Web (si je comprends bien), envisagez JAX-WS RI ou CXF si vous recherchez une pile compatible JAX-WS (les deux prennent en charge le contrat-first ou java-first) , ou SpringWS ("seulement" contrat-premier), ou peut-être Axis2 (je ne l'aime pas personnellement à cause de son modèle de développement et de déploiement et de ses performances). Si vous n'avez pas besoin de trucs sophistiqués WS- *, je vous suggère d'utiliser JAX-WS RI qui est inclus dans Java 6 et qui est compatible avec le WS-I Basic Profile 1.1 (donc il couvre un groupe décent) des normes WS- *). Si vous avez besoin de choses plus avancées (comme WS-SecureConversation, WS-SecurityPolicy, WS-ReliableMessaging, WS-Trust, WS-AtomicTransactions/Coordination, WS-MetadataExchange, SOAP sur TCP fournies par WSIT/Tango), envisagez d'utiliser Metro (Metro = JAX-WS RI + WSIT/Tango).

(EDIT:. Répondre à un commentaire de l'OP sur le soutien WS-SecureConversation

En fait, je pense que la pile qui prend en charge les normes les plus WS- * est Metro.Vous voudrez peut-être vérifier Apache Axis2, CXF and Sun JAX-WS RI in comparison pour plus de détails. Mais, il est très improbable que vous ayez besoin de tous et les choses pourraient avoir légèrement changé depuis que l'article a été publié. Donc, CXF pourrait en effet être une alternative. Par exemple, en ce qui concerne WS-SecureConversation, CXF le supporte aussi selon ses documentation mais seulement avec les projets "wsdl-first". Sans plus de détails sur ce que vous allez faire, il est difficile de vous donner une réponse plus précise pour savoir lequel est le meilleur pour vous.)

+0

Très intéressant! "WS-SecureConversation", oui j'en ai besoin. Si je comprends bien CXF le soutiendrait? – Alex

+0

J'ai mis à jour ma réponse pour couvrir cette partie aussi. –

+0

Des réponses brillantes, les gars! Thay me fait aller dans la bonne direction je pense. – Alex

11

jetée est un serveur Web et le conteneur de servlet. CXF est une bibliothèque de services Web. Si vous souhaitez diffuser du contenu comme avec un serveur Web, choisissez Jetty. Si vous devez vous connecter ou fournir des services Web, choisissez CXF. Je ne suis pas sûr qu'il y ait une zone floue entre les deux.

+0

Super c'est exactement le genre de clarification que je cherchais! Disons que j'ai un framework de conteneur comme OSGi et que je veux exposer un service web. Serait-il correct de dire que j'hébergerais un composant basé sur CXF en tant que bundle OSGi? Comme je comprends maintenant: Jetty = serveur web embarquable, CXF = framework de services web qui supporte le transport comme HTTP intégré. Donc ça ne dépend pas d'un hôte comme Jetty? – Alex

+0

Oui, vous pouvez héberger un composant CXF en tant qu'ensemble OSGi. Si vous vous connectez uniquement à un point de terminaison http, vous n'avez pas besoin de Jetty ou du service HttpService OSGi car CXF peut se connecter à l'aide de l'une des différentes bibliothèques client http disponibles. Bien que si vous souhaitez recevoir des connexions via HTTP, CXF semble utiliser Jetty comme indiqué par cette entrée de doc [1]. Si vous avez également déployé le HttpService OSGi, vous devez vous assurer que votre instance de CXF Jetty se trouve sur des ports différents. [1] http://cwiki.apache.org/CXF20DOC/standalone-http-transport.html – Carl

+0

Des réponses brillantes, les gars! Thay me fait aller dans la bonne direction je pense. – Alex

0

Jetty est un serveur (un conteneur de servlet), ainsi que Tomcat et quelques autres. Jetty est décent, Tomcat a été autour pendant un certain temps et a plus de documentation et de tutoriels.

CXF semble être un choix intéressant. Je n'ai utilisé que des implémentations directes et CXF était assez récent, je pense que c'est la suite du projet XFire.

CXF ressemble à un choix judicieux. En cas de doute, je dirais aller avec des normes et des cadres construits sur eux. Je dirais passer en revue la documentation et pour les questions compliquées, vous pouvez vous abonner à certaines listes de diffusion.

+1

CXF (CeltiXfire) est une fusion de Celtix (IONA) et Xfire (Codehaus). –

Questions connexes