web services avec JAX-WS

Initialement le client (java web start) DocDoku communiquait au serveur (composants ejb) à l’aide du protocole corba IIOP.
Malheureusement, à tort ou à raison, les proxies http sont souvent le passage obligé pour accéder à internet dans de nombreuses sociétés.
Nous avons donc décidé de passer aux web services. Aujourd’hui cette migration est terminée mais je dois avouer que ce fut plus compliqué que prévu. Voici un bref retour d’expérience :

Au niveau sécurité, les options sont nombreuses, nous avons néanmoins opté, par prudence, pour la simplicité : authentification basic sur du SSL.
Ce poste explique ceci en détails.

Ensuite, la grande difficulté a été d’utiliser nos POJOs sur le client et le serveur sans passer par une couche d’objets intermédiaires mappant le wsdl.
Etrangement, aucun tutorial de Sun n’explique clairement cela et les assistants de netbeans génèrent invariablement cette couche d’objets (avec la commande wsimport) même si le webservice a été créé à partir d’une interface SEI (Service Endpoint Interface).
Sous les conseils d’Alexis, j’ai filé un bug chez netbeans.
Enfin, la solution est la suivante, il faut donc définir une interface pour l’EJB avec endpoint webservice et non simplement annoter les méthodes avec @WebMethod.
Ensuite, importer les classes produites par wsgen également sur le client.
Enfin, récupérer le web service Port par javax.xml.ws.Service.getPort(Class<T> serviceEndpointInterface).

5 Comments

  1. Clement

    J’ai une question plutot qu’un commentaire.
    Le plugin wsgen de maven me génère un fichier .xsd pour mon service qui fait un import du schéma addressing (ws-addr.xsd). Je voudrais que le .xsd généré fasse plutot référence à un schéma ws-addr.xsd qui serait local. Je tourne en rond sur cette question depuis quelques jours… Si vous avez une idée sur la question?

  2. Florent Garin Author

    Désolé, je n’ai pas la solution.
    La commande wsgen ne propose que peu de paramètres.
    Mais, en quoi est-ce un problème de générer la référence à ws-addr.xsd non localement ? Cela ne devrait pas empêcher ton serveur d’application de fonctionner normalement même s’il n’a pas accès à internet. Cette référence ne sert que de namespace.

    Enfin, bientôt la commande wsgen n’existera plus, les stubs seront tous dynamiques !

    Tiens moi au courant.

  3. At the beginning, I was still puzzled. Since I read your article, I have been very impressed. It has provided a lot of innovative ideas for my thesis related to gate.io. Thank u. But I still have some doubts, can you help me? Thanks.

  4. Can you be more specific about the content of your article? After reading it, I still have some doubts. Hope you can help me. https://accounts.binance.com/vi/register?ref=V2H9AFPY

  5. Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me? https://accounts.binance.com/ru/register-person?ref=JHQQKNKN

Comments are closed.