peux tu me fournir un zip de ton projet
peux tu me fournir un zip de ton projet
Willy78
Je l'ai mis sur rapidshare désolée :
http://rapidshare.de/files/11758914/...tions.zip.html
Il y des contraintes sur la classe ConventionEnregistrement qui doit être une interface qui étends Remote et dont chacune des méthodes doit pouvoir lancer une RemoteException:
En suite, au niveau de la classe de test, je ne l'est pas touchée, tu peux la supprimer j'ai fait les modifs dans Resultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package localhost.axis.services.Version; import java.rmi.Remote; import java.rmi.RemoteException; public interface ConventionEnregistrement extends Remote { public void enregistrementConvention(String labnomE, String labrueE, String labvilleE, String labcodePostE, String labnumE, String labnomResp, String labnomInterloc)throws RemoteException; }
Normalement, c'est ok pour la compil et si tomcat est démarré çà doit marcher.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 package localhost.axis.services.Version; import java.util.*; import javax.swing.*; public class Resultat { public Resultat(Vector vecteur) { try { ConventionEnregistrementServiceLocator loc = new ConventionEnregistrementServiceLocator(); java.net.URL url = new java.net.URL( "http://localhost:8080/axis/services/Convention"); ConventionEnregistrement stub = loc.getConventions(url); stub.enregistrementConvention(vecteur.elementAt(0).toString(), vecteur.elementAt(1).toString(), vecteur.elementAt(2) .toString(), vecteur.elementAt(3).toString(), vecteur.elementAt(4).toString(), vecteur.elementAt(5) .toString(), vecteur.elementAt(6).toString()); } catch (Exception e1) { System.out.println("erreur" + e1); } } }
Willy78
Oh c'est pas vrai !!!!! j'suis maudite c'est pas possible !
Y'a encore une erreur de générée !!!!
J'commence à en avoir marre là :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org.apache.commons.logging.LogFactory at org.apache.axis.components.logger.LogFactory.class$(LogFactory.java:45) at org.apache.axis.components.logger.LogFactory$1.run(LogFactory.java:45) at java.security.AccessController.doPrivileged(Native Method) at org.apache.axis.components.logger.LogFactory.getLogFactory(LogFactory.java:41) at org.apache.axis.components.logger.LogFactory.<clinit>(LogFactory.java:33) at org.apache.axis.handlers.BasicHandler.<clinit>(BasicHandler.java:43) at org.apache.axis.client.Service.getAxisClient(Service.java:103) at org.apache.axis.client.Service.<init>(Service.java:112) at localhost.axis.services.Version.ConventionEnregistrementServiceLocator.<init>(ConventionEnregistrementServiceLocator.java:12) at localhost.axis.services.Version.Resultat.<init>(Resultat.java:10) at localhost.axis.services.Version.Add.actionPerformed(Add.java:161) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)
bonjour
ajoute commons-logging.jar dans les libs du projet eclipse:
D:\Logiciels\Apache\SOAP\axis-1_2_1\lib\commons-logging-xxx.jar
Willy78
Merci Willy ! Désolée de répondre aussi tard !
J'aurai une autre question : après avoir exécuté mon projet sous eclipse, comment est-ce-que je lance mon web service par l'intermédiaire de mon browser?? Il doit bien falloir faire quelque chose de spécial avant de lancer l'url que j'ai passé dans mon fichier wsdl, nan?
Encore une petite chose :
Lorsque je lance mon projet : il m'indique une erreur d'indice....
J'avais recopié le code que tu m'avais conseillé Willy :
=> ce code ajoute à une liste qui permettra ensuite d'en extraire les données qu'elle contient.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 while(result.next()) { List liste = new ArrayList(); for(int i=1; i<=8; i++){ liste.add(result.getString(i)); } vecteur.add(liste); }
=> c'est là qu'on extrait ces informations.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 stub.enregistrementConvention(vecteur.elementAt(0).toString(), vecteur.elementAt(1).toString(), vecteur.elementAt(2).toString(), vecteur.elementAt(3).toString(), vecteur.elementAt(4).toString(), vecteur.elementAt(5).toString(), vecteur.elementAt(6).toString());
Voici ce qu'il y a d'indiqué dans la console après l'exécution de mon projet :
Il me recopie bien ce les informations que je lui ai entré (txtnomE...) et les met bien dans une liste du vecteur, mais il a un bug avec l'indice parce qu'il prend pour l'indice 1, la première liste !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT * FROM `etablissement`; com.mysql.jdbc.Statement@bfbdb0 Vecteur[[519, txtnomE, txtrueE, txtvilleE, txtcodePostE, txtnumE, txtnomResp, txtnomInterloc]] erreurjava.lang.ArrayIndexOutOfBoundsException: 1 >= 1
Si j'ai deux entrées dans ma base de données, il m'indique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT * FROM `etablissement`; com.mysql.jdbc.Statement@1050169 Vecteur[[521, rtyurtyu, ryturty, rtyeu, 45679, 4564456456, rtyurty, rtyurtyu], [522, txtnomE2, txtrueE2, txtvilleE2, txtcodePostE2, txtnumE2, txtnomResp2, txtnomInterloc2]] erreurjava.lang.ArrayIndexOutOfBoundsException: 2 >= 2
Ensuite lorqu'il y a plus de 6 enregistrements dans la base, il m'écrit :
=> il n'a plus le problème d'indice, mais erreurTheAxis...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT * FROM `etablissement`; com.mysql.jdbc.Statement@bfbdb0 Vecteur[[526, tityuit, yuity, uityuiuyz, rzerz, retzert, zertzert, ytuuit], [525, tuyit, yuityui, tyuit, uityui, tyuity, uityuit, yuituitui], [524, tuyityui, tuityuit, yuityuit, yuityuit, uityuit, tuyityuitu, tyuityui], [521, rtyurtyu, ryturty, rtyeu, 45679, 4564456456, rtyurty, rtyurtyu], ....] erreurThe AXIS engine could not find a target service to invoke! targetService is Convention
A croire qu'il y aura TOUJOURS un problème ! lol
Bonsoir
C'est normal tu as un vecteur dont la dimension est égale au nombre de lignes dans la base.
Chaque element de ce vecteur est une liste contenant les elements d'une ligne de la table. tu peux changer l'arrayList en vector si tu veux indexer les éléments:
on a alors un vecteur contenant les enregistrements et chaque element de ce vecteur est un vecteur contenant les colones.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 while(result.next()) { Vector ligne = new Vector(); for(int i=1; i<=8; i++){ ligne.add(result.getString(i)); } vecteur.add(ligne); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package localhost.axis.services.Version; import java.util.*; import javax.swing.*; public class Resultat { public Resultat(Vector vecteur) { try { ConventionEnregistrementServiceLocator loc = new ConventionEnregistrementServiceLocator(); java.net.URL url = new java.net.URL( "http://localhost:8080/axis/services/Convention"); ConventionEnregistrement stub = loc.getConventions(url); // pour chaque ligne on invoque le service for(int i=0;i<vecteur.size();i++){ Vector ligne=(Vector)vecteur.elementAt(i); stub.enregistrementConvention(ligne.elementAt(0).toString(), ligne.elementAt(1).toString(), ligne.elementAt(2) .toString(), ligne.elementAt(3).toString(), ligne.elementAt(4).toString(), ligne.elementAt(5) .toString(), ligne.elementAt(6).toString()); } } catch (Exception e1) { System.out.println("erreur" + e1); } } }
Willy78
Merci beaucoup Willy, avec toute ces histoires de vecteurs, listes...c'est à ne plus rien comprendre ! je teste tout ca...et j'te dis
Toujours une erreur...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5SELECT * FROM `etablissement`; com.mysql.jdbc.Statement@bfbdb0 erreurThe AXIS engine could not find a target service to invoke! targetService is Convention
Bonjour
Ton erreur est due au fait que ton application qui fonctionne tente d'invoquer le service web Convention sur le serveur tomcat. Est ce que le serveur fonctionne?
Willy78
Normalement il fonctionne puisque je le lance, et j'arrive à accéder au menu axis...
Que donne l'url http://localhost:8080/axis/services
Willy78
Ca me sort les services :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 And now... Some Services * AdminService (wsdl) o AdminService * Version (wsdl) o getVersion
Comme l'indique le message d'erreur, il n'existe pas de service convention sur ton serveur.
Willy78
ah ok...ba merci pour l'info parce que j'avais même pas fais le rapprochement entre les services et ce qu'il y a d'affiché à l'url http://localhost:8080/axis/services
Comme quoi j'ai des (GROS) progrès à faire lol
Pour ajouter Convention à mes services d'axis, il faut utiliser la commande java org.apache.axis.client.AdminClient fichier.wsdl ??
J'ai vu que cette opération mettait à jour le fichier $Tomcat-Dir/webapps/axis/WEB-INF/server-config.wsdd.
Mais je viens de voir qu'il y a toujours mon problème de classpath, c'est bizarre ca...
Maintenant que la partie cliente du service est terminée, on passe à la partie serveur:
La partie serveur est un projet à part.
Le projet est de type application web.
Quand tu as généré les classes avec wsdl2java, un fichier deploy.wsdd et un fichiers undeploy.wsdd ont été créés. Ces deux fichiers permettent bien de déployer le service avec axis.
Dans un nouveau projet eclipse tu copie les fichier générés par wsdl2java.
Tu modifies le fichier ConventionsSoapBindingStub.java qui est l'implémentation du service. C'est dans ce fichiers que tu implémentes les opérations que doit effectuer le service.
Une fois cela fait, il faut utiliser org.apache.axis.client.AdminClient en passant comme argument le fichier deploy.wsdd.
Willy78
J'ai pas ces deux fichiers puique j'avais repris par rapport à ce que tu m'avais passé du fait que j'ai toujours eu un problème de soit disant classpath, et du coup...y'a aucun fichier deploy.wsdd ou undeploy.wsdd !Quand tu as généré les classes avec wsdl2java, un fichier deploy.wsdd et un fichiers undeploy.wsdd ont été créés.
Ce que j'ai c'est ca :
http://rapidshare.de/files/12125225/...tions.zip.html
C'est simplement les classes en fait
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager