2009-10-01 8 views

Répondre

3

AXIS ou CXF est-il nécessaire pour les services Web Java?

No. Bien que Axis2 est le cadre le plus populaire pour travailler avec les services Web ne sont pas la seule façon de les faire.

Tout cela peut-il être fait via le JDK (1.6)?

Oui, mais c'est beaucoup plus difficile. Vous bénéficierez énormément de l'utilisation d'un framework utilisé par d'autres applications et des corrections de bogues que l'équipe de développement fournit. Tout faire à la main, c'est comme réinventer la roue.

Si vous voulez avoir le contrôle total de ce qui se passe en dessous, probablement vous pouvez aller avec: JAX-WS

ou si l'application est très simple, directement avec prise.

Mais encore une fois, Axis2 est la manière canonique de faire WS (mais pas le seul)

+1

Juste une supposition, mais il veut probablement un peu plus de détails que cela. –

+0

@Willliam: Edité pour ajouter plus de détails. Je pense que peu importe ce qui est ajouté à la fin, la réponse sera la même. L'axe est-il nécessaire? Non, peut être fait avec JDK? Oui, mais c'est beaucoup plus difficile. :) – OscarRyz

1

Vous pouvez utiliser les flux http fournis par le serveur Web que vous Whish, mais en utilisant un cadre et quelques pots (qui sont éprouvé au travail) vous épargnera beaucoup de maux de tête et beaucoup de temps à long terme.

0

Normalement, vous voudrez utiliser un cadre de programmation pour les services Web.

Quelque chose comme AXIS, CXF ou le téléchargement Java EE (GlassFish) de Sun.

2

Comme alternative à Axis, vous pouvez utiliser le framework Spring WebServices pour exécuter votre application webservices dans un conteneur J2EE tel que Tomcat ou similaire. Je l'ai trouvé très facile à utiliser et à configurer, et si vous souhaitez intégrer vos services Web dans une autre application Web plus tard, c'est assez facile à faire (je l'ai fait moi-même à deux reprises).

+0

Axe1? Mal. Axe2? Encore pire. +1 pour les services Web de printemps. – duffymo

3

Ce qui suit est basé sur un tout histoire vraie et personnelle:

Donc, vous voulez consommer un service Web dans votre application Web Java, et vous ne voulez pas ajouter 10MiB de Jars à votre Lean 1,3 MiB .war fichier, et d'ailleurs vous êtes excellent à l'analyse XML (vous pouvez coder à la main XPath Queries, et les fichiers XSLT), vous comprenez totalement HTTP, et le client avec lequel vous êtes en interface a une excellente documentation. Vous téléchargez le WSDL regardez vos points de terminaison et vos méthodes et commencez à créer une classe Java qui correspond aux fonctionnalités dont vous aurez besoin. Vous vous sentez déjà bien. Ils commencent à lire sur la façon d'envoyer une requête SOAP et vous pensez que cela a l'air un peu bavard, mais ce qu'ils disent c'est juste une chaîne, donc vous commencez à construire un utilitaire qui prend votre objet de requête Java et le convertit à une demande SOAP. Vous envoyez votre demande SOAP claire au serveur mais elle est refusée (missing a signature). Alors maintenant vous commencez à ajouter des JAR de chiffrement à votre projet et vous commencez à regarder comment calculer une signature d'une partie d'un document XML et l'inclure dans le document.Cela vous prend un certain temps, mais avec un peu de piratage, vous obtenez un message que vous pouvez envoyer à votre service de savon et vous êtes maintenant face à la SOAP response. Jusqu'à ce que l'administrateur de votre client modifie ses exigences de sécurité, émette de nouvelles clés publiques et mette à jour l'interface soap avec certains types personnalisés, et votre prochain client qui exécute un service similaire (mais sur un serveur Windows) veut que vous les implémentiez également. À ce stade, j'ai renoncé à essayer de l'implémenter de manière purement Java et j'ai commencé à utiliser des bibliothèques standard. Ils traitent des choses comme le cryptage, le marshaling, les déviations des normes et ils vous permettent de vous concentrer sur des choses qui sont plus proches de votre domaine de problème. J'espère que vous pouvez vous épargner le mois perdu qu'il m'a fallu pour apprendre cette leçon.

3

Une mise à jour sur le paysage des services web en 2013.

services Web utilisés comme SOAP et XML. Les services Web ont été standardisés dans JAX-WS. Certains des cadres les plus populaires sont (étaient):

  • Axis 1.x
  • Axe 2
  • Apache CXF - CXF comprend également d'autres protocoles. C'est un cadre beaucoup plus large
  • Metro Web Services qui inclut l'implémentation de référence JAX-WS.
  • Java 6 et Java 7 incluent le JAX-WS RI par défaut. Cela signifie que les frameworks ne sont plus nécessaires, sauf pour générer des stubs/squelettes de client et de service

Il existe d'autres implémentations qui ne sont pas listées ici qui sont spécifiques au fournisseur, par ex. L'implémentation WS d'IBM Websphere et l'implémentation WS de Weblogic.

Généralement, pour créer des services Web, je recommande Metro et le JAX-WS RI.

Notez qu'il existe de nombreuses normes WS- *, par ex. WS-Security qui peut ne pas faire partie de toutes les implémentations WS.

Depuis que les services Web existent depuis un certain temps, d'autres alternatives ont vu le jour en termes de style architectural, de protocole et de codage.

Par exemple, XML était l'encodage de facto. JSON est maintenant plus répandue. Il est intéressant de regarder dans Jackson, un analyseur JSON, ou Google GSON. Les principaux arguments en faveur de JSON sont qu'il est facile à utiliser, léger et convivial pour les développeurs.

Avec JSON est venu REST. REST est un style architectural. Avec REST, vous pouvez toujours implémenter des "services Web" dans le sens de services distants qui peuvent être facilement consommés sur un réseau. REST a également été standardisé dans la famille de normes Java en tant que JAX-RS. Certaines des implémentations populaires de JAX-RS incluent CXF, Jersey et RESTLet.

Enfin, il y a quelques nouveaux enfants sur le bloc qui utilisent des codages binaires. Ce sont les tampons de protocole Google et Apache Thrift. Leur objectif principal est la performance ainsi qu'un support plus large pour d'autres langages (Java, C#, Erland, Perl ...).

Lors du développement d'un service Web aujourd'hui, la question devrait être: - est-ce que je me soucie de la performance? - est-ce que je veux accéder au service de beaucoup de différentes langues? - est-ce que je veux mobile-friendly?

Ceux-ci devraient vous aider à guider votre choix. Aussi, je préfère garder mes dépendances au minimum. Cela signifie que je préférerais prendre quelque chose qui est originaire du JRE ou du JDK, par exemple. l'implémentation de référence JAX-WS ou JAX-RS.

+0

Merci pour cela, très instructif. –

+0

Pouvez-vous s'il vous plaît mettre à jour cette réponse pour 2016? Qu'est-ce qui a changé et quelles sont les nouvelles normes? Avez-vous des articles de blog qui vont dans plus de détails sur le même? – gonephishing

+0

Je dirais que JSON, REST et Jersey sont la voie à suivre: il est plus léger et plus facile à utiliser. –