Bonjour à tous,
Je veux apprendre à développer en utilisant le Web Service Axis et je voudrais avoir un exemple concret de ce que je pourrais faire avec (assez simple vu que c'est pour jouer un peu)
Merci
Bonjour à tous,
Je veux apprendre à développer en utilisant le Web Service Axis et je voudrais avoir un exemple concret de ce que je pourrais faire avec (assez simple vu que c'est pour jouer un peu)
Merci
Bonjour,
Le plug-in WTP d'Eclipse intègre Axis 1.4 et il est trés facile à utiliser, voilà un lien qui te montre comment développer un web service de a à z(un peux ancien, car il y a des parties qui sont complètement automatisés mnt).
Dans les cours et tutoriels pour apprendre le langage Java : http://java.developpez.com/cours/
Il y a un autre tutoriel Java qui est intéressant et qui te montre comment crée un client pour consommer ton web service en axis
http://karamimed.developpez.com/j2ee/tutoriels/axis/
Enjoy
Bonjour,
je teste le tutoriel Java http://java.developpez.com/cours/
pour déployer un web service dans Axis.
Sauf que je bloque à la partie " 26.1.6. Le déploiement du service dans Axis "
L'auteur présente une solution passant par un .bat qui semble adaptée à windows...
Sauf que je suis sous ubuntu.
Je suis pas sur que l'erreur vienne de là, il n'empêche que je n'arrive pas à passer cette étape.
En fait mon gros problème, je ne sais pas comment compiler un web service pour qu'il soit prêt à être déployé dans axis.
J'ai tenté de simplement créer un fichier .jws à partir d'un .java et de le placer dans le dossier axis.
Sauf que j'ai des dépendances (import) dans ma classe et que là, ben je ne sais pas ou placer mes .jar...
En gros dans mon projet java, j'ai des dépendances et de l'héritage.
Sous quelle forme (.war peut-être) je peux compiler mon projet?
Si vous aviez un lien vers un tuto adapté à mon pb...
Merci d'avance.
Bon je continue,
Je teste le tuto suivant :
karamimed.ftp-developpez.com/j2ee/tutoriels/axis/wsaxis.pdf
Sauf que, problème.
J'en suis page 12, partie IV-C
je tape la ligne de commande : java org.apache.axis.client.AdminClient deploy.wsdd
Et j'ai l'erreur suivante :
Si quelqu'un y voit quelque chose.
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
37
38
39
40 log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle). log4j:WARN Please initialize the log4j system properly. Processing file deploy.wsdd Exception: AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: java.net.ConnectException: Connection refused faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace:java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:310) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:176) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:163) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:381) at java.net.Socket.connect(Socket.java:537) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:153) at org.apache.axis.components.net.DefaultSocketFactory.create(DefaultSocketFactory.java:120) at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191) at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404) at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) at org.apache.axis.client.Call.invokeEngine(Call.java:2784) at org.apache.axis.client.Call.invoke(Call.java:2767) at org.apache.axis.client.Call.invoke(Call.java:1792) at org.apache.axis.client.AdminClient.process(AdminClient.java:439) at org.apache.axis.client.AdminClient.process(AdminClient.java:404) at org.apache.axis.client.AdminClient.process(AdminClient.java:410) at org.apache.axis.client.AdminClient.process(AdminClient.java:320) at org.apache.axis.client.AdminClient.main(AdminClient.java:463) {http://xml.apache.org/axis/}hostname:natoine-laptop
Merci d'avance.
Bonjour,
J'ai voulu te répondre hier, mais plus moyen d'accéder au forum.
Voici le message que j'avais tapé :
Bonjour,
Cet article de la FAQ à propos de la modification du CLASSPATH pourra peut-être te permettre d'adapter le script à Linux.
Sinon, à propos du déploiement de services web avec Axis, si tu souhaites conserver une approche code-first, je te conseilles d'utiliser un descripteur de déploiement (fichier .wsdd) comme présenté sur le guide utilisateur d'Axis ou encore sur ce tutorial.
Enfin, il est également possible (voire préférable) d'adopter une approche contract-first pour le déploiement de services web (ie rédiger le contrat WSDL du service puis utiliser un outil de génération automatique du squelette du code), ce que tu peux également trouver sur le guide utilisateur d'Axis.
Pour ton second problème, es-tu sûr d'avoir un serveur d'applications qui tourne sur le port par défaut (à savoir 8080) ?
Si le port de ton serveur d'applications est différent, tu peux utiliser l'option -p pour le spécifier.
Merci Arnaud.
Je viens juste de poster la solution à mon problème dans un autre topic.
http://www.developpez.net/forums/d23...fused-connect/
L'erreur venait bien de la spécification du port.
Pour le reste de ton post ça va m'aider.
Donc à toi.
Hum et sinon, j'ai fait un ensemble de classes me permettant d'interfacer (gérer toutes les requêtes) une base de donnée (on a notre modèle bien précis, pas une gestion de bdd à la hibernate).
Et je me retrouve avec de l'héritage.
Je voudrai transformer ces classes java en différents WebServices.
L'idée est que plusieurs applications puissent taper dans la même base à distance.
Du coup la suite de ma question serait de savoir comment à partir d'un projet java créer un ensemble de web services?
Si quelqu'un peut m'éclairer.
Merci d'avance.
Ecrire un descripteur de déploiement (fichier .wsdd) pour chaque classe que tu souhaites exposer en tant que service web ne convient pas ?
Heu je n'ai pas encore essayé.
Mais l'idée serait, vu que j'ai un ensemble de classes pour une même appli, de pouvoir regrouper l'ensemble des .class dans un même dossier.
Bon je vais essayer.
Chaque fichier .class devra être placé dans une arborescence de répertoires du nom du package de la classe correspondante, le dossier axis\WEB-INF\classes étant la racine de cette arborescence.
Le déploiement se passe bien mais par contre, sur :
http://localhost:18080/axis/servlet/AxisServlet
Je me retrouve avec rien de listé.
Et si je vais à l'adresse de l'un de mes Web Services :
http://localhost:18080/axis/services/interfacesBDD
Je n'ai rien.
Pire, si je tente d'appeler l'une de mes méthodes :
http://localhost:18080/axis/services...od=isConnected
J'ai l'erreur suivante :
AXIS error
Sorry, something seems to have gone wrong... here are the details:
Exception - java.lang.NoClassDefFoundError: InterfaceBDD (wrong name: intermed/questionnaire/interfacesBDD/InterfaceBDD)
Au contraire, il y a un problème dans le déploiement...
Es-tu sûr que pour chaque service nom.du.package.NomDuService, le fichier NomDuService.class compilé correspondant se trouve bien dans le répertoire axis\WEB-INF\classes\nom\du\package\NomDuService.class ?
Si le problème n'est pas là, je ne vois pas ce qui a pu se produire...
Et bien mon package est : intermed.questionnaire.interfacesBDD;
Et InterfaceBDD.class se trouve bien dans axis/WEB-INF/classes/intermed/questionnaire/interfacesBDD
Par contre, il y a une série d'import dans ma classe :
Et je me dis que le dernier import, ben je n'ai pas dû copier le .jar correspondant au bon endroit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 import java.sql.Timestamp; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import bdd_connector.BDD;
Mais ce ne serait pas le même message d'erreur je suppose si le problème venait de là.
Dernière question, n'est-ce pas génant que ma classe ait un constructeur?
Je ne pense pas que ton problème vienne d'ici...
J'ai dû faire ce test une fois, je ne crois pas que cela pose problème...
Quand tu dis
Tu veux dire :Le déploiement se passe bien mais par contre, sur :
http://localhost:18080/axis/servlet/AxisServlet
Je me retrouve avec rien de listé.
- que tes services ne sont pas listés, mais qu'il y a tout de même encore le service Version initial
- qu'aucun service n'est listé
- que le page ne s'affiche pas ?
La présence ou non d'un constructeur ne change rien à mon problème, je viens de tenter.
Pour la liste des services, il ne m'affiche que
Rien d'autre après.And now... Some Services
Par contre, pour mes .class, j'ai fait une simple copie de mes .class générés par eclipse.
Je vais essayer de les recompiler par javac.
Il est possible que tu aies un problème du côté d'Axis, car même si le déploiement de tes services avait échoué, tu devrais toujours avoir le service Version sur la liste...
Un redéploiement de l'archive axis.war pourrait peut-être être (un peu bourrin mais) efficace...
En ce qui concerne la compilation ed tes fichiers .class, je ne pense pas qu'utiliser directement javac plutôt que de récupérer les fichiers compilés par Eclipse change quelquechose...
Donc, j'ai redéployé et je retrouve bien la liste des servlets de base
Je refais ma hierarchie de dossier avec mes .class et mes .wsdd* AdminService (wsdl)
o AdminService
* Version (wsdl)
o getVersion
Je tape :
J'ai en retour :java org.apache.axis.client.AdminClient -p 18080 deploy.wsdd
Je recharge la page http://localhost:18080/axis/servlet/AxisServletlog4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).
log4j:WARN Please initialize the log4j system properly.
Processing file deploy.wsdd
<Admin>Done processing</Admin>
Et là j'ai :
Le contenu de mon deploy.wsddSorry, something seems to have gone wrong... here are the details:
Fault - Could not find class for the service named: InterfaceBDD
Hint: you may need to copy your class files/tree into the right location (which depends on the servlet system you are using).; nested exception is:
java.lang.ClassNotFoundException: InterfaceBDD
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
faultSubcode:
faultString: Could not find class for the service named: InterfaceBDD
Hint: you may need to copy your class files/tree into the right location (which depends on the servlet system you are using).; nested exception is:
java.lang.ClassNotFoundException: InterfaceBDD
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}hostname:natoine-laptop
J'en peux plus...<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="interfaceBDD" style="java:RPC">
<parameter name="className" value="InterfaceBDD"/>
<parameter name="allowedMethods" value="*"/>
</service>
</deployment>
Il manque le nom du package de ta classe InterfaceBDD dans ton fichier wsdd :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="interfaceBDD" style="java:RPC"> <parameter name="className" value="nom.du.package.InterfaceBDD"/> <parameter name="allowedMethods" value="*"/> </service> </deployment>
Nickel mes services sont déployés et bien listés.
Par contre, je teste l'appel d'une méthode qui devrait me renvoyer un booléen (false en l'occurence).
Et j'ai ce retour :
Je suppose que les booléens ne sont pas aimés comme retour...<soapenv:Envelope>
−
<soapenv:Body>
−
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
−
<faultstring>
java.lang.InstantiationException: intermed.questionnaire.interfacesBDD.InterfaceBDD
</faultstring>
−
<detail>
<ns1:hostname>natoine-laptop</ns1:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
Je ne pense pas que ton erreur ait à voir avec les booléens (qui sont d'ailleurs parfaitement tolérés), mais plutôt avec une InstantiationException lancée quelquepart.
Peut-être aurais-tu un newInstance() problématique qui traîne quelquepart côté serveur ?
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