La création du web service, puis son déploiement s’effectue selon les étapes suivantes.
Dans le répertoire de développement C:\devIfproject, on crée une structure de fichiers correspondant au package ifproject.atws, contenant les sources java que nous avons écrites à la section précédente, à savoir :
Connection2mysqlWS.java
CotationsWS.java
InfoMarcheWS.java
MethodesWSImpl.java
On y ajoute une interface décrivant les méthodes publiques qui sont en fait les opérations proposées par le web service.
Cette interface MethodesWS.java est la suivante :
package ifproject.atws;
public interface MethodesWS {
public String[] getTitresDisponibles();
public String getMarche(String code);
public String getDevise(String code);
public String getDatePremiereCotation(String code);
public String[] getDates(String code, String dateIn, String dateFin);
public String[] getCours(String code, String dateIn, String dateFin);
public String[] getVolumes(String code, String dateIn, String dateFin);
public String[] getMoyenneMobileExponentielle(int n, String code, String dateIn,
String dateFin);
}
Rétrospectivement, la classe MethodeWSImpl.java développée précédemment implémente cette interface.
Les fichiers .java sont ensuite compilés
javac ifproject\atws\*.java
A partir des classes ainsi obtenues (en fait à ce niveau, à partir de l’interface ATWS.java ), il est maintenant possible de fabriquer le document atws.wsdl qui sera la description du WS accessible à tout consommateur potentiel du web service.
Comme nous l’avons évoqué dans la présentation des technologies utilisées, cette opération devient vite fastidieuse si on souhaite la réaliser à la main. C’est la raison pour laquelle nous utiliserons donc l’outil adéquat fourni avec Axis.
Il s’agit de Java2WSDL, qui s’exécute en ligne de commande :
java org.apache.axis.wsdl.Java2WSDL -o atws.wsdl -y wrapped -u literal -l"http://localhost:8080/axis/services/atws" -n urn:atws -p"atws" urn:atws ifproject.atws.ATWS
La signification des divers paramètres optionnels est la suivante :
-o atws.wsdl --> donne le nom au fichier de sortie wsdl.
-y wrapped et –u literal --> ces options ont rapport avec les styles du web service qui sont en fait une indication de la façon dont l’association doit se faire entre les méthodes d’appel Java et les invocations du web services.
Il est important de noter que les valeurs « wrapped » et « literal » sont les seules valeurs supportées par les clients WS J2ME (en fait, le générateur de stub du SWTK refuse de travailler avec d’autres valeurs). En arriver à cette conclusion a pris au bas mot, une semaine de tâtonnement !
-l"http://localhost:8080/axis/services/atws" --> permet de définir l’URL à laquelle le WS sera accessible.
-n urn:atws --> permet de definir l’espace de nommage cible du WSDL
-p"atws" urn:atws ifproject.atws.ATWS --> assure l’association entre l’espace de nommage du WSDL et le package contenant les sources.
Le fichier atws.wsdl décrit le web service, mais il n’est pas suffisant, loin s’en faut pour le déployer. Il est nécessaire de coder les classes qui géreront l’interface entre le code java que nous avons développé et Axis.
a. Cela se fait à partir d’un autre utilitaire venant avec Axis. Il s’agit de WSDL2Java qui d’exécute en ligne de commande :
java org.apache.axis.wsdl.WSDL2Java –o . -d Session -s -p ifproject.atws.ws atws.wsdl
-o . --> définit le répertoire de sortie
-s --> demande la création de classes cotés serveur encapsulant l’accès au web service
-p --> définit le package devant contenir les classes en question
Cette opération conduit au résultat suivant :
Seule la classe AtwsSaopBindingImpl.java, qui est en fait un squelette vide de classe doit être complétée.
b. Compilation des sources, composition du .jar et copie dans le répertoire adéquat du serveur :
En ligne de commande :
javac ifproject\atws\ws\*.java
jar cvf atws.jar ifproject/atws/*.class ifproject/atws/ws/*.class
mv atws.jar %TOMCAT_HOME%/webapps/axis/WEB-INF/lib
c. Déploiement avec AdminClient et deploy.wsdd
java org.apache.axis.client.AdminClient deploy.wsdd
a. J2ME --> SWSTK Stub Generator
b.Client secondaire, classes générées avec Axis WSDL2Java