WebServices JAX-WS et appels asynchrones.
Bonjour,
voila je suis nouveau dans le monde des webservices, et je suis un peu perdu avec toute la littérature existante.
J'ai opté pour une méthode "Bottom - up" (c'est à dire que j'écrit mon API Java pour ensuite générer le WSDSL).
C'est là que ca se complique: Est-il possible d'une façon ou d'une autre de définir des méthodes qui seront utilisé en asynchrones ?
J'ai bien essaier de faire comme suit :
Code:
1 2 3 4 5 6 7
|
@WebService
public interface MonWS
{
@WebMethod
public Future<?> maMethode(@WebParam(name="parm") String param, @WebParam(name="callback") AsyncHandler<ResultClass> callback);
} |
mais l'outil wsgen (ou le plugin maven) me sort un WSDL vide.
J'ai ensuite essaier autre chose:
Code:
1 2 3 4 5 6 7
|
@WebService
public interface MonWS
{
@WebMethod
public ResultClass(@WebParam(name="parm") String param);
} |
La génération fonctionne (je voie bien les types d'entrée et de retour dans le WSDSL).
et j'ai ensuite lance la commande wsimport avec un xml de binding
Code:
1 2 3 4 5 6 7 8 9
|
<bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" wsdlLocaption="http://localhost:8080/jaxws-async/addnumbers?WSDL"
xmlns="http://java.sun.com/xml/ns/jaxws">
<bindings node="wsdl:definitions">
<package name="async.client" />
<enableAsyncMapping>true</enableAsyncMapping>
</bindings>
</bindings> |
Et la miracle, j'ai bien une interface avec les méthodes asynchrones.
Est-ce la "bonne" façon de faire ? ca me parait fastidieux de devoir :
- Ecrire l'API avec des signatures de méthode synchrone
- Générer un WSDL (vi wsgen)
- Générer les classes d'interface asynchrone (via wsimport).
J'espere avoir été assez claire et je vous remercie par avance.