Developpez.com - Rubrique Java Web

Le Club des Développeurs et IT Pro

Apprendre à développer des services web étendus avec JAX-WS, Maven et Eclipse,

Un tutoriel de Mickael Baron

Le 2016-01-13 08:42:36, par Mickael Baron, Rédacteur
Bonjour,

Je vous propose un tutoriel qui présente sous la forme d'exercices comment utiliser l'API JAX-WS pour le développement de services web étendus.

Chaque exercice est fourni avec un projet Java Maven contenant des classes et des fichiers de configuration qu'il faudra compléter au fur et à mesure des questions. À la fin de chaque exercice, une solution du projet Java sera donnée.

L'adresse du tutoriel est disponible ici : http://mbaron.developpez.com/tutorie...maven-eclipse/

Bon tutoriel et apprentissage autour de JAX-WS.

Mickael
  Discussion forum
21 commentaires
  • Mickael Baron
    Rédacteur
    Je vais être un tout petit peu de mauvaise foi mais pourquoi faire un article sur une technologies en perdition .... SOAP meurt au profit de REST.
    Je ne dirais pas que SOAP meurt mais est moins utilisé. SOAP à l'inverse de REST s'appuie sur des standards. Il est encore utilisé entre entreprises. Il adresse des besoins différents. Chacun son usage et laissons les gens utilisaient ce qu'ils veulent et ne laissons pas les buzz words dicter les choix.

    Pourquoi ne pas parler de spring-boot, spring-cloud ou même jax-rs .... ?
    Pour JAX-RS qui adresse les services web REST ça sera pour le prochain : http://www.developpez.net/forums/d15...maven-eclipse/

    Pour Spring-Boot il adresse les microframeworks et s'appuie partiellement sur des choses déjà faite sur JAX-RS (c'est mon avis).

    Mickael
  • Jahmass
    Candidat au Club
    Je ne dirais pas que SOAP meurt mais est moins utilisé
    Ok, constat identique au final, sauf que je vais plus loin en disant que c'est au profit de REST ce qui se justifie aussi (mon avis).

    SOAP à l'inverse de REST s'appuie sur des standards.
    REST s'appuie sur le standard HTTP ... rien de moins.

    Il est encore utilisé entre entreprises. Il adresse des besoins différents. Chacun son usage et laissons les gens utilisaient ce qu'ils veulent et ne laissons pas les buzz words dicter les choix.
    C'est vrai mais il a été aussi moult et moult fois étudié, expliqué et ma question (qui ne se veut pas trollesque mais en a les traits) portait plus sur le fait d'encore faire un tutoriel dessus.

    Cela dit, il est vrai qu'un tutoriel sur JAX-RS va arriver donc au moins ça pourra donner un ensemble de comparaison intéressante espérons le.

    Merci de la réponse.
  • Mickael Baron
    Rédacteur
    Salut,

    Pour les standards je voulais parler du poster en PJ.

    Pour la petite information, ces tutoriels sous formes d'exercices sont un support que j'utilise pour présenter un cours sur SOA. Je mets en avant les bien faits de REST face à SOAP. SOAP existe et je ne peux pas ne pas en parler.

    Mickael
  • Mickael Baron
    Rédacteur
    Salut,

    Cela vient plus d'un problème de Java et d'Eclipse que de problème lié à mon tutoriel. Peux-tu poster sur le bon forum, tu auras peut être plus de chance

    Mickael
  • neuraxis
    Nouveau membre du Club
    J'ai commencé l'exercice 1 du tuto. Quand j'ai importé le projet dans eclipse, j'ai une erreur « Plugin execution not covered by lifecycle configuration: org.jvnet.jax-ws-commons:jaxws-maven-plugin:2.3:wsgen ». Pour la corrigé j'ai ajouté la balise <pluginManagement/> comme indiqué dans ce thread. Dans la fin de l'exercice, tu es moins clair sur l'étape pour générer le wsdl à partir de Maven dans eclipse, d'ailleurs j'ai pas réussi .
    Ton tuto est super! Merci pour le travail fourni.
  • Mickael Baron
    Rédacteur
    Salut,

    Pour la génération du WSDL du premier exercice. Tu peux faire cela en ligne de commande

    $ mvn clean process-classes

    Mickael
  • Gatico
    Nouveau Candidat au Club
    Bonjour Mickaël,

    J'essaie de faire ton tuto, mais je n'arrive pas à lancer les scripts wsgen1 et wsgen2 y compris en ligne de commande comme tu le suggères.

    J'arrive toujours à une erreur de build.

    Voici la trace:

    C:\Mes workspaces\workspaces_Mars\workspace_01\NotebookWebServiceExercice1>mvn "wsgen1 (clean and process-classes).launch"
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] Building NotebookWebServiceExercice1 0.1-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 0.100 s
    [INFO] Finished at: 2016-01-31T18:06:16+01:00
    [INFO] Final Memory: 5M/123M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Unknown lifecycle phase "wsgen1 (clean and process-classes).launch". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]
    [ERROR]
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR]
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/d...FoundException

    Bref, je ne m'en sors pas. Peux-tu m'aider un peu stp?

    En te remerciant.
    Jeff
  • Mickael Baron
    Rédacteur
    Bonjour,

    En ligne de commande il faut saisir cela

    $ mvn clean process-classes

    Cela : wsgen1 (clean and process-classes).launch c'est le nom du fichier correspondant à une configuration d'exécution d'Eclipse

    Mickael
  • telendri
    Candidat au Club
    Bonjour,

    Je voudrais d'abord vous remercier pour vos divers tutos, cela aide énormément.

    J'ai effectué les 6 exercices de votre tuto : développement de services Web avec JAX-WS.

    J'ai deux questions, une en rapport à l'exercice 4, l'autre sur l'exercice 6.

    ex4:

    J'ai effectué l'exercice sans soucis, et je vois bien les logs du serveur jboss. Cependant, si le webservice n'est pas déployé ou si le serveur est éteint.
    le client fonctionne tout de même...
    Je n'arrive pas à comprendre pourquoi?

    ex6:

    Quand je fais un clean and build sur le projet et que je déploie sur le serveur, les logs du serveur indique que le fichier handler.xml est manquant, alors
    que je l'ai bien placé dans le repértoire WEB-INF.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    Caused by: javax.xml.ws.WebServiceException: JBAS015507: Handler chain config file soa/jaxwslabs/notebookwebserviceexercice6/service/handler.xml not found in ResourceRoot [root="/M:/content/NotebookWebServiceExercice6-1.0-SNAPSHOT.war/WEB-INF/classes"]
            at org.jboss.as.webservices.injection.WSHandlerChainAnnotationProcessor.getInputStream(WSHandlerChainAnnotationProcessor.java:158)
            at org.jboss.as.webservices.injection.WSHandlerChainAnnotationProcessor.processHandlerChainAnnotation(WSHandlerChainAnnotationProcessor.java:130)
            at org.jboss.as.webservices.injection.WSHandlerChainAnnotationProcessor.processHandlerChainAnnotations(WSHandlerChainAnnotationProcessor.java:116)
            at org.jboss.as.webservices.injection.WSHandlerChainAnnotationProcessor.deploy(WSHandlerChainAnnotationProcessor.java:93)
            at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
            ... 5 more
    Avez-vous une idée du problème?

    Merci d'avance de votre réponse.

    Telendri
  • Mickael Baron
    Rédacteur
    Salut,

    Comme c'est un appel asynchrone je pense que le code dans le callbakc du bouton est fait et que l'appel via le service web échoue

    Quand je fais un clean and build sur le projet et que je déploie sur le serveur, les logs du serveur indique que le fichier handler.xml est manquant, alors
    que je l'ai bien placé dans le repértoire WEB-INF.
    Etrange. Vérifie que le fichier est présent au niveau du répertoire target

    Mickael