IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Java Discussion :

Deploiement Web Service avec AxisJBoss


Sujet :

Services Web Java

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 101
    Points : 79
    Points
    79
    Par défaut Deploiement Web Service avec AxisJBoss
    Bonjour, lors de déploiement d'un service Web avec Axis, j'obtiens deux erreurs suivantes:
    log4j:ERROR Could not create an Appender.Reported error follows.
    log4j:ERROR Could not parse input source [org.xml.sax.InputSource@1eec35]


    voilà; ya quelqu'un qui sait comment faire pour corriger ceci?Merci

  2. #2
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Points : 215
    Points
    215
    Par défaut
    Bonjour,

    Je n'ai jamais eu ce type d'erreur avec Axis, mais pourrais-tu décrire comment tu t'y prends pour déployer ton service web et à quel moment tu obtiens cette erreur, voire donner quelques informations sur ce service (code / contrat WSDL) si besoin est ?

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 101
    Points : 79
    Points
    79
    Par défaut
    Étant débutant dans le dev des WS, je pourrais peut être faire des bêtises..
    En fait je viens de commencer par un exemple trés simple qui affiche un message de bienvennue à l'utilisateur.voici le code HelloService.java de ce WS:
    ##################################

    public class HelloService {
    public String sayHello(String arg){
    return "Hello " + arg;
    }
    }
    ##############################

    Pour le déployer, j'ai copié HelloService.java dans WEB-IN/axis ( sous eclipse), et je l'ai renommé HelloService.jws, aprés je lance le serveur d'application JBoss, et c'est là ou l'erreur apparati!

    Parcontre, le contrat WSDL dont tu me parle, je n'en ai pas! et je sais pas encore à koi ça sert?

    Merci bcp pour ton aide

  4. #4
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Points : 215
    Points
    215
    Par défaut
    Tu dois copier ton fichier HelloService.jws dans le répertoire axis de ton serveur d'applications.

    Je ne sais pas comment s'utilise JBoss ni si on peut accéder à ses répertoires directement depuis Eclipse, mais il me semble que tu ne copies pas le fichier au bon endroit et qu'il ne puisse donc pas être retrouvé...

    Sur Tomcat 6.0, le répertoire est Tomcat 6.0\webapps\axis.
    Sur GlassFish v2, il s'agit de glassfish\domains\domain1\autodeploy\axis.

    Pour le contrat WSDL, il s'agit d'un document XML décrivant l'accès à ton service web. Tu pourras y accéder une fois ton service correctement déployé.

    Il y a deux approches pour créer un service web :
    - soit en rédigeant directement le code
    - soit en rédigeant le contrat WSDL du service puis en utilisant des outils de génération automatique du squelette du code

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 101
    Points : 79
    Points
    79
    Par défaut
    Merci pour ta reponse, effectivement je n'utilise ni tomcat ni glassfish..Malheureusement que j'ai pas trouvé de doc expliquant comment déployer les Ws avec Jboss..
    j'ai essayé de placer analogiquement le fichier HelloService.jws comme si je travaille avec tomcat , voici son emplacement:
    C:\java\jboss-4.0.5.GA\server\default\deploy\axis.war/HelloService.jws

    Mais malgré ça, ça marche pas!!!

    Pour Le fichier WSDL, d'apres ce que j'ai compris, il me semble qu'il se génére automatiquement..est ce que c'est vrai?

    il reste à te signaler qu'on ne peux pas acceder au repeortoire de jboss à partir d'eclipse..

    j'ai ecrit pour mon WS un client.. c'est la classe TestClient qui contient la methode main, mais je ne sais pas comment la compiler!!
    je me demande est il possible de la compiler à partir d'eclipse apres avoir lancé jboss? ( si le deploiement marche)

    Merci encore pour ton aide!

  6. #6
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Points : 215
    Points
    215
    Par défaut
    Citation Envoyé par asmoune Voir le message
    Merci pour ta reponse, effectivement je n'utilise ni tomcat ni glassfish..Malheureusement que j'ai pas trouvé de doc expliquant comment déployer les Ws avec Jboss..
    j'ai essayé de placer analogiquement le fichier HelloService.jws comme si je travaille avec tomcat , voici son emplacement:
    C:\java\jboss-4.0.5.GA\server\default\deploy\axis.war/HelloService.jws
    D'où vient ton archive axis.war ?

    Normalement, pour installer la dernière version d'Axis (1.4), il suffit de télécharger ici une archive (format zip, tar.gz ou autre) et de la décompresser pour obtenir un répertoire axis-1_4.
    Ensuite, le sous-répertoire axis-1_4\webapps\axis doit être copié sur ton serveur d'applications.
    C'est ensuite dans ce dossier axis (c'est de celui-ci que je parlais plus haut) que les fichiers .jws sont censés être placés.


    Citation Envoyé par asmoune Voir le message
    Pour Le fichier WSDL, d'apres ce que j'ai compris, il me semble qu'il se génére automatiquement..est ce que c'est vrai?
    Dans le cas d'une génération du service web par une approche code-first (code d'abord), ce que tu as fait, oui.

    Citation Envoyé par asmoune Voir le message
    j'ai ecrit pour mon WS un client.. c'est la classe TestClient qui contient la methode main, mais je ne sais pas comment la compiler!!
    je me demande est il possible de la compiler à partir d'eclipse apres avoir lancé jboss? ( si le deploiement marche)
    Eclipse compile automatiquement les fichiers .java lorsqu'ils sont modifiés et sauvegardés.
    Tu peux directement lancer ta classe cliente depuis Eclipse en faisant Run AS > Java Application, mais pour qu'elle fonctionne correctement, il faut bien sûr que le service web auquel elle fait appel soit déployé.

  7. #7
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 101
    Points : 79
    Points
    79
    Par défaut
    Ok, Merci Arnaud.. j'ai refait l'emplacement des fichiers de tel sorte que mon fichier .jws soit dans le sous répertoire axis qui est dans mon serveur d'application.. mais celà n'est pas fait à partir d'eclipse, je me demande si je dois egalement respecter l'arborescence sur eclipse aussi?

  8. #8
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Points : 215
    Points
    215
    Par défaut
    Citation Envoyé par asmoune Voir le message
    mais celà n'est pas fait à partir d'eclipse, je me demande si je dois egalement respecter l'arborescence sur eclipse aussi?
    Eclipse ne te sert ici qu'à écrire correctement ta classe HelloService, rien de plus. Tu pourrais même utiliser n'importe quel éditeur de texte pour écrire l'implémentation du service.
    Ensuite il suffit de changer l'extension du fichier en .jws et de le copier dans le répertoire axis de ton serveur d'applications.
    Enfin, une fois ton serveur d'applications lancé, tu pourras accéder au service HelloService à l'URL http://localhost:8080/axis/HelloService.jws.

    PS : Si tu ne l'as pas déjà fait, tu peux lire la section correspondante du guide utilisateur d'Apache Axis.

  9. #9
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 101
    Points : 79
    Points
    79
    Par défaut
    je suis tout a fait d'accord..mais avant de lancer mon serveur d'application, il faut compiler ma classe cliente que je nommais TestClient? n'est ce pas ?
    voilà ce que j'ai fait:
    1) j'ai compilé ma classe cliente, comme tu m'as indiqué cidessus.
    2) j'ai lancé mon serveur d'application.
    3) acces au service HelloService par http://localhost:9090/axis/HelloService.jws.

    Mais la page obtenue n'est ce qui est attendu!!

    sachant que mon serveur d'application affiche toujours l'erreu liée au log4j que je citais au départ ( ci dessus)..voilà
    Merci encore pour ton aide..

  10. #10
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 101
    Points : 79
    Points
    79
    Par défaut
    j'ai oublié de te dire que j'obtient une autre erreur sur eclipse quand je compile ma classe cliente.. voici l'erreur obtennue:

    13 août 2008 14:46:48 org.apache.axis.utils.JavaUtils isAttachmentSupported
    ATTENTION: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.
    (404)/axis/HelloService.jws

  11. #11
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Points : 215
    Points
    215
    Par défaut
    Comme je te l'ai dit, la compilation des fichiers .java est plutôt transparente avec Eclipse car celle-ci est effectuée à chaque sauvegarde d'une classe.

    Ce que tu fais toi est exécuter ta classe cliente (Run As > Java Application), mais tu ne dois exécuter la classe cliente qu'une fois le service web déployé, sinon tu ne pourras pas accéder au service (d'où une erreur 404).

    D'ailleurs, je ne sais pas si l'erreur 404 (ressource indisponible) que tu obtiens provient de l'exécution du client avec un service non encore déployé ou bien avec un service mal déployé (pas au bon endroit).

    Mais j'y pense, comment crées-tu ton client ? Utilises-tu une génération automatique de code à partir du contrat WSDL (ce dont je doute vu que tu ne connaissais pas ce qu'était un contrat WSDL) ou bien utilises-tu une invocation dynamique du service web (ce qui est plus complexe pour débuter) ?

    Enfin, le message "ATTENTION: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled." n'est qu'un warning stipulant des librairies manquantes, mais ce n'est pas utile d'y prêter attention dans ton cas.

    Jette un oeil au toturial d'Axis dans mon message précédent, cela devrait te guider.

  12. #12
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 101
    Points : 79
    Points
    79
    Par défaut
    Merci pour tes réponses!

    j'ai crée mon client dans le même package que le WS, en créant une classe java appelée TestClient.java


    par contre, l'erreur toujours affichée est liée au fichier log4j.xml se trouvant dans le sous répertoire C:\java\jboss-4.0.5.GA\server\default\conf


    voilà, j'en sais plus koi faire!

    Merci en tout cas pour ton aide!

  13. #13
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Points : 215
    Points
    215
    Par défaut
    Citation Envoyé par asmoune Voir le message
    j'ai crée mon client dans le même package que le WS, en créant une classe java appelée TestClient.java
    Mais comment invoques-tu le service web depuis le client ?

    As-tu généré un stub client à partir du contrat WSDL (je ne pense pas) ?

    Utilises-tu une invocation dynamique ?

    Pourrais-tu poster le code de ton client s'il te plaît ?

  14. #14
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 101
    Points : 79
    Points
    79
    Par défaut
    Bonjour,

    voici le code client:


    package com.essai.exemple;

    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;
    import javax.xml.rpc.*;

    public class TestClient {
    public static void main(String[] args) {
    try {
    String endpoint = "http://localhost:9090/axis/HelloService.jws";

    // on crée une instance de la classe org.apache.axis.client.Service
    Service service = new Service();

    // on crée un appel de service par la methode createCall
    Call call = (Call) service.createCall();

    // La fonction setTargetEndpointAddress définit l'url du service à
    // appeler.
    call.setTargetEndpointAddress(new java.net.URL(endpoint));

    // setOperationName définit le nom de la méthode à appeler.
    call.setOperationName("sayHello");

    // invoke appelle la methode distante et prend un tableau de type
    // Object comme parametre.
    String ret = (String) call.invoke(new Object[] { "John" });
    System.out.println(ret);
    } catch (Exception e) {
    System.out.println(e.toString());
    }
    }

    }

  15. #15
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Points : 215
    Points
    215
    Par défaut
    Le client est bon.

    Sous JBoss il semble bien qu'il faille créer une archive axis.war (tu avasi raison) et non pas utiliser directement un répertorie axis, comme le montre ce pdf.

    Enfin, ce lien devrait pouvoir t'aiguiller dans l'utilisation d'Axis sur JBoss.

    La marche à suivre : implémenter le service, changer l'extension .java en .jws, déployer le service en copiant le fichier .jws dans l'archive axis.war, démarrer le serveur JBoss, puis terminer en exécutant le client.

  16. #16
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 101
    Points : 79
    Points
    79
    Par défaut
    Merci pour le lien, en fait j'ai remarqué deux soucis en fait!
    déja l'emplacement des fichiers marche bien, pas de souci a ce niveau!
    parcontre, quand je lance Jboss, il ya toujçurs l'erriur suivante:

    ERROR could not start on port 1099

    Malgré cette erreur le Ws se deploie, car je lance http://localhost:8080/axis/HelloService.jws effectivement, il m'affiche la fiche souhaité sur le navigateur, et elle contient le message suivant:

    There is a Web Service here

    Click to see the WSDL


    Mais quand je clique sur " Click to see the WSDL" , il affiche dans la page de navigateur:

    AXIS error

    Sorry, something seems to have gone wrong... here are the details:

    Fault - ; nested exception is:
    java.io.FileNotFoundException: C:\java\jboss-4.2.1.GA\server\default\.\deploy\axis.war\WEB-INF\jwsClasses\HelloService.class (Le fichier spécifié est introuvable)

    AxisFault
    faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
    faultSubcode:
    faultString: java.io.FileNotFoundException: C:\java\jboss-4.2.1.GA\server\default\.\deploy\axis.war\WEB-INF\jwsClasses\HelloService.class (Le fichier spécifié est introuvable)
    faultActor:
    faultNode:
    faultDetail:
    {http://xml.apache.org/axis/}hostname:pt1950

    Qu'est ce que tu pense de ces erreurs?

  17. #17
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 101
    Points : 79
    Points
    79
    Par défaut
    j'ai oublié de te demander si on peux créer le service web à partir d'eclipse?

  18. #18
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Points : 215
    Points
    215
    Par défaut
    Citation Envoyé par asmoune Voir le message
    Mais quand je clique sur " Click to see the WSDL" , il affiche dans la page de navigateur:

    AXIS error

    Sorry, something seems to have gone wrong... here are the details:

    Fault - ; nested exception is:
    java.io.FileNotFoundException: C:\java\jboss-4.2.1.GA\server\default\.\deploy\axis.war\WEB-INF\jwsClasses\HelloService.class (Le fichier spécifié est introuvable)

    AxisFault
    faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
    faultSubcode:
    faultString: java.io.FileNotFoundException: C:\java\jboss-4.2.1.GA\server\default\.\deploy\axis.war\WEB-INF\jwsClasses\HelloService.class (Le fichier spécifié est introuvable)
    faultActor:
    faultNode:
    faultDetail:
    {http://xml.apache.org/axis/}hostname:pt1950

    Qu'est ce que tu pense de ces erreurs?
    Normalement, en déployant un fichier .jws, Axis se charge automatiquement de créer et de placer le fichier compilé HelloService.class au bon endroit. Vérifie dans le répertoire axis.war\WEB-INF\jwsClasses si tu as bien ce fichier HelloService.class : si ce n'est pas le cas, tu peux peut-être essayer de l'y copier toi-même (le fichier HelloService.class se trouve dans le répertoire bin de ton projet Eclipse).

    Citation Envoyé par asmoune Voir le message
    j'ai oublié de te demander si on peux créer le service web à partir d'eclipse?
    Eclipse permet effectivement de simplifier la création et le déploiement de service web :
    - en implémentant le service (approche bottom-up)
    - en rédigeant le contrat WSDL (approche top-down)
    Ensuite, il suffit de faire un clic droit dans l'onglet Package Explorer sur le fichier source du service ou bien sur son contrat WSDL (selon l'approche) puis de cliquer sur New > Other... > Web Service et sélectionner Start Service et Test Client tout en cochant la case Monitor the Web service
    En fait, Eclipse utilise Axis (par défaut) ou Axis2 de manière plus transparente pour l'utilisateur.

  19. #19
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 101
    Points : 79
    Points
    79
    Par défaut Configuration axis
    Bonjour , lors du téléchargement d'axis, en fait il faux le configurer avec le serveur d'application JBoss.. mais j'ai pas fait cette étape!!je pense qu'il faux faire des modifications dans le fichier server.xml, est ce que tu sais les changements qu'il faux faire? en plus, il ya des fichiers .jar qu'il faux ajouter dans le classpath, je me demande ou se trouve ces .jar et ou il se trouve également le classpath?
    Merci pour votre aide!

  20. #20
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Points : 215
    Points
    215
    Par défaut
    J'ai installé JBoss et le déploiement automatique d'un fichier .jws échoue si je spécifie un nom de package.

    L'erreur est similaire à celle que tu as obtenue :
    Fault - ; nested exception is:
    java.io.FileNotFoundException: C:\Program Files\jboss-4.2.2.GA\server\default\.\tmp\deploy\tmp33427axis-exp.war\WEB-INF\jwsClasses\HelloService.class (Le fichier spécifié est introuvable)
    Je ne comprends pas d'où vient la partie "\.\tmp\deploy\tmp33427axis-exp.war\" du chemin d'accès qui est utilisé...

    Par contre, si je n'indique aucun package pour la classe HelloService, je peux correctement accéder au contrat WSDL du service...

    De même, j'ai testé le déploiement avec descripteur de déploiement .wsdd et je n'ai eu aucun souci (idem pour des services déployés avec Axis2 même si ce n'est pas le sujet ici).

    Concernant une éventuelle configuration d'Axis avec JBoss, je n'ai rien trouvé à ce sujet, je déploie simplement l'archive axis.war sur JBoss sans rien toucher d'autre...
    Je ne vois pas non plus ce qu'il pourrait falloir modifier au fichier server.xml (si tant est qu'il y ait quelque chose à y modifier)...

    Quant aux fichiers .jar dont tu parles, peux-tu détailler davantage de quoi il s'agit ?

Discussions similaires

  1. Appeler un web service avec pl/sql
    Par squalito dans le forum PL/SQL
    Réponses: 5
    Dernier message: 17/09/2012, 15h21
  2. [Debutant]création de web services avec JWS
    Par Mehdi_82 dans le forum Services Web
    Réponses: 3
    Dernier message: 09/07/2008, 20h22
  3. [Debutant] Web services avec Jboss WS
    Par nesbla dans le forum Services Web
    Réponses: 1
    Dernier message: 14/08/2006, 13h52
  4. Déploiement de Web Service avec InstallShield
    Par _beber85 dans le forum Services Web
    Réponses: 7
    Dernier message: 12/07/2006, 13h28
  5. [Web Service][avec Struts]un tuto? un lien?
    Par javazer dans le forum Struts 1
    Réponses: 3
    Dernier message: 28/03/2006, 18h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo