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 :

[AXIS] Exemple concret de cas d'utilisation de Webservice avec Axis


Sujet :

Services Web Java

  1. #21
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    Yep. Avec une classe sans constructeur, ça marche nickel.

    Merci pour ton aide et ta réactivité en tout cas.
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  2. #22
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    Ah, nouveau problème.
    J'ai créé une méthode init() qui me permet de charger un xml et d'en récupérer le contenu.
    L'objectif est de créer un fichier de config pour pouvoir indiquer au web service quelle base aller requêter.

    Quand je teste ma classe en solo (sans la déployer comme un web service), pas de problème.
    Par contre quand je déploie le web service associé à que j'appelle cette méthode init là ça plante.

    Voilà le code de la méthode :
    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
     
    public boolean init()
    	{
    		org.jdom.Document document;
    		SAXBuilder sxb = new SAXBuilder();
    		try
    		{
    			document = sxb.build(new File("configBDD.xml"));
    			Element racine = document.getRootElement();
    			this._host = racine.getChild("host").getText();
    			this._login = racine.getChild("login").getText();
    			this._password = racine.getChild("password").getText();
    			//System.out.println(this._host + " " + this._login + " " + this._password);
    		}
    		catch(Exception e)
    		{
    			e.printStackTrace();
    			return false;
    		}
    		return true;
    	}
    L'url appelante : http://localhost:18080/axis/services...an?method=init

    Et le retour :
    <soapenv:Envelope>

    <soapenv:Body>

    <soapenv:Fault>
    <faultcode>soapenv:Server.userException</faultcode>
    <faultstring>java.lang.reflect.InvocationTargetException</faultstring>

    <detail>
    <ns1:hostname>natoine-laptop</ns1:hostname>
    </detail>
    </soapenv:Fault>
    </soapenv:Body>
    </soapenv:Envelope>
    J'ai essayé de placer le fichier configBDD.xml dans le même dossier que le .class ça ne marche pas.

    En fait le plus propre serait de pouvoir créer un dossier dans lequel je mettrai le fichier configBDD.xml à la racine de mon Web Service.
    Si quelqu'un peut m'aiguiller.
    Merci d'avance.
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  3. #23
    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
    Une idée en l'air pour essayer de savoir dans quel répertoire placer ton fichier xml : exposer dans ton service web la méthode suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public String getPath() {
        return new File("").getAbsolutePath();
    }
    Ensuite, en invoquant cette méthode, tu pourras peut-être obtenir le chemin absolu du répertoire où placer ton fichier xml...

    Je ne suis pas sûr du résultat, ni même si ton problème peut venir de là, mais c'est tout ce que je peux te proposer...

    EDIT : J'ai testé un service avec cette opération sur un serveur Tomcat et elle me retourne le répertoire TOMCAT_HOME...

  4. #24
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    Ouais j'ai eu la même idée.
    Du coup j'ai placé mon fichier au bon endroit et ...
    Ca n'a pas l'air d'être ça le problème

    Y a pas moyen d'en savoir plus sur les erreurs que crache Axis?
    Genre un fichier log.
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  5. #25
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    Bon, après plusieurs test, je me rends compte que c'est cette ligne qui crash :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SAXBuilder sxb = new SAXBuilder();
    Je suppose qu'il doit me falloir placer la lib correspondante au bon endroit.

    Donc à quel endroit devrais-je la mettre?
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  6. #26
    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
    À propos des erreurs, tu peux éventuellement regarder les fichiers de log de ton serveur d'applications (TOMCAT_HOME\logs pour Tomcat).

    À propos de la lib, je suppose qu'elle doit être incluse dans ton projet comme toute autre lib...

  7. #27
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    Les lib doivent être placées dans le dossier WEB-INF/lib de axis.
    Et là ça marche.

    Par contre, j'espérais pouvoir renvoyer des ResultSet en retour des méthodes de mon Web Service... Ben non.
    J'ai le message d'erreur :

    Fault - ; nested exception is:
    java.io.IOException: No serializer found for class com.mysql.jdbc.ResultSet in registry org.apache.axis.encoding.TypeMappingDelegate@34f445

    AxisFault
    faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
    faultSubcode:
    faultString: java.io.IOException: No serializer found for class com.mysql.jdbc.ResultSet in registry org.apache.axis.encoding.TypeMappingDelegate@34f445
    faultActor:
    faultNode:
    faultDetail:
    {http://xml.apache.org/axis/}hostname:natoine-laptop
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  8. #28
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    Nouveau problème (j'avance petit à petit).
    J'ai voulu remplacer mes resultset par une classe serialisable.
    Sauf que j'ai dû manquer une étape.

    J'ai l'erreur suivante :

    Fault - ; nested exception is:
    java.io.IOException: No serializer found for class survey.Survey in registry org.apache.axis.encoding.TypeMappingDelegate@1aac775

    AxisFault
    faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
    faultSubcode:
    faultString: java.io.IOException: No serializer found for class survey.Survey in registry org.apache.axis.encoding.TypeMappingDelegate@1aac775
    faultActor:
    faultNode:
    faultDetail:
    {http://xml.apache.org/axis/}hostname:natoine-laptop
    En fait, le web service devrait renvoyer un ArrayList d'objets Survey.
    Le code de la classe Survey (ultra simple) :

    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
    package survey;
     
    import java.sql.Timestamp;
    import java.util.ArrayList;
     
    public class Survey implements java.io.Serializable
    {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1361676586418252125L;
     
    	public int id ;
    	public String title;
    	public String description;
    	public Timestamp date_creation;
     
    	public ArrayList<Section> sections;
     
    	public Survey(int _id , String _title , String _description , Timestamp _date)
    	{
    		id=_id;
    		title=_title;
    		description=_description;
    		date_creation=_date;
    	}
     
     
    }
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  9. #29
    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
    Il semblerait que les ResultSet soient mal tolérés en sérialisation/désérialisation, tu peux sans doute trouver davantage d'informations à ce sujet...

    Une solution consiste effectivement à utiliser un JavaBean personnel. Par contre, les JavaBeans soivent suivre certaines conventions dont notamment :
    - implémenter l'interface java.io.Serializable
    - posséder un constructeur sans argument
    - posséder un getter et un setter pour chacun de ses attributs

    Pour déployer un service web avec un JavaBean avec Axis, il faut rajouter l'élément suivant au descripteur de déploiement deploy.wsdd :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <typeMapping xmlns:ns="http://HOSTNAME:PORT/SERVICENAME/"
                 qname="ns:JAVABEANNAME" type="java:PACKAGENAME.JAVABEANNAME"
                 serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
                 deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
                 encodingStyle="" />
    HOSTNAME, PORT, SERVICENAME, JAVABEANNAME et PACKAGENAME sont à remplacer.

    Enfin, il faut également bien décrire dans le fichier deploy.wsdd chaque opération que le service web doit exposer, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <operation name="operationName" qname="operNS:OperationName"
               xmlns:operNS="http://hostname:port/ServiceName/"
               returnQName="outParamName" returnType="rtns:JavaBeanName
               xmlns:rtns="http://hostname:port/ServiceName/"
               soapAction="http://hostname:port/ServiceName/OperationName">
        <parameter qname="inParamName" type="tns:type" xmlns:tns="http://www.w3.org/2001/XMLSchema" />
    </operation>
    operationName, OperationName, hostname, port, ServiceName, outParamName, JavaBeanName, inParamName et type sont à remplacer (je ne sais pas s'il faut absolument respecter la casse).

  10. #30
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    Alors, j'ai un service creator qui doit me renvoyer des objets de type Survey.
    Survey étant un javabean (j'ai respécté les conventions).

    Du coup mon deploy.wsdd devrait ressembler à ça non?

    <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java" xmlns:ns="http://localhost:18080/SERVICENAME/" qname="ns:Survey" type="java:survey.Survey" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="">
    <service name="creator" style="java:RPC">
    <parameter name="className" value="web_services.Creator"/>
    <parameter name="allowedMethods" value="*"/>
    <operation name="operationName" qname="operNS:OperationName" xmlns:operNS="http://hostname:port/ServiceName/" returnQName="outParamName" returnType="rtns:JavaBeanName xmlns:rtns="http://hostname:port/ServiceName/" soapAction="http://hostname:port/ServiceName/OperationName">
    <parameter qname="inParamName" type="tns:type" xmlns:tns="http://www.w3.org/2001/XMLSchema" />
    </operation>
    </service>
    </deployment>
    Je dois bien remplacer SERVICENAME par creator?
    Et pour les opérations, ça correspond aux méthodes de creator auxquelles je veux pouvoir accéder par le service?

    Exactement, je viens d'écrire le fichier deploy.wsdd suivant :

    <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java" xmlns:ns="http://localhost:18080/creator/" qname="ns:Survey" type="java:survey.Survey" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="">
    <service name="creator" style="java:RPC">
    <parameter name="className" value="web_services.Creator"/>
    <parameter name="allowedMethods" value="*"/>
    <operation name="getMySurveys" qname="operNS:getMySurveys" xmlns:operNS="http://localhost:18080/creator/" returnQName="_surveys" returnType="rtns:survey.Survey" xmlns:rtns="http://localhost:18080/creator/" soapAction="http://localhost:18080/creator/getMySurveys">
    <parameter qname="_id_user" type="tns:int" xmlns:tns="http://www.w3.org/2001/XMLSchema" />
    </operation>
    </service>
    </deployment>
    Bien sur, ça ne marche pas

    J'ai le message d'erreur suivant :
    Sorry, something seems to have gone wrong... here are the details:

    Fault - ; nested exception is:
    java.io.IOException: No serializer found for class survey.Survey in registry org.apache.axis.encoding.TypeMappingDelegate@ec1c4d

    AxisFault
    faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
    faultSubcode:
    faultString: java.io.IOException: No serializer found for class survey.Survey in registry org.apache.axis.encoding.TypeMappingDelegate@ec1c4d
    faultActor:
    faultNode:
    faultDetail:
    {http://xml.apache.org/axis/}hostname:natoine-laptop
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  11. #31
    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 Arnaud_03 Voir le message
    Pour déployer un service web avec un JavaBean avec Axis, il faut rajouter l'élément suivant au descripteur de déploiement deploy.wsdd :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <typeMapping xmlns:ns="http://HOSTNAME:PORT/SERVICENAME/"
                 qname="ns:JAVABEANNAME" type="java:PACKAGENAME.JAVABEANNAME"
                 serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
                 deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
                 encodingStyle="" />
    HOSTNAME, PORT, SERVICENAME, JAVABEANNAME et PACKAGENAME sont à remplacer.
    Citation Envoyé par natoine Voir le message
    Exactement, je viens d'écrire le fichier deploy.wsdd suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java" xmlns:ns="http://localhost:18080/creator/" qname="ns:Survey" type="java:survey.Survey" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="">
      <service name="creator" style="java:RPC">
        <parameter name="className" value="web_services.Creator"/>
        <parameter name="allowedMethods" value="*"/>
        <operation name="getMySurveys" qname="operNS:getMySurveys" xmlns:operNS="http://localhost:18080/creator/" returnQName="_surveys" returnType="rtns:survey.Survey" xmlns:rtns="http://localhost:18080/creator/" soapAction="http://localhost:18080/creator/getMySurveys">
          <parameter qname="_id_user" type="tns:int" xmlns:tns="http://www.w3.org/2001/XMLSchema" />
        </operation>
      </service>
    </deployment>
    Je ne vois pas d'élément typeMapping dans ton fichier deploy.wsdd...

  12. #32
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    Autant pour moi je me suis bien échoué sur ce coup là.
    Bah, donc voici ma nouvelle version de deploy.wsdd :

    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
     
    <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <service name="creator" style="java:RPC">
    <parameter name="className" value="web_services.Creator"/>
    <parameter name="allowedMethods" value="*"/>
    </service>
    <typeMapping xmlns:ns="http://localhost:18080/creator/"
                 qname="ns:Survey" type="java:survey.Survey"
                 serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
                 deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
                 encodingStyle="" />
     <operation name="getMySurveys" qname="operNS:getMySurveys" xmlns:operNS="http://localhost:18080/creator/" returnQName="_surveys" returnType="rtns:survey.Survey" xmlns:rtns="http://localhost:18080/creator/" soapAction="http://localhost:18080/creator/getMySurveys">
          <parameter qname="_id_user" type="tns:int" xmlns:tns="http://www.w3.org/2001/XMLSchema" />
        </operation>
    </deployment>
    Mais j'ai toujours l'erreur :
    Sorry, something seems to have gone wrong... here are the details:

    Fault - ; nested exception is:
    java.io.IOException: No serializer found for class survey.Survey in registry org.apache.axis.encoding.TypeMappingDelegate@1d27069

    AxisFault
    faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
    faultSubcode:
    faultString: java.io.IOException: No serializer found for class survey.Survey in registry org.apache.axis.encoding.TypeMappingDelegate@1d27069
    faultActor:
    faultNode:
    faultDetail:
    {http://xml.apache.org/axis/}hostname:natoine-laptop
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  13. #33
    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
    Hmm... Sans conviction, c'est peut-être le Timestamp qui n'est pas sérialisable ?

    Sinon, tu peux peut-être essayer d'écrire un service simple utilisant un JavaBean simple (genre un JavaBean Personne avec des attributs nom, prenom, age) et de les déployer, puis de les complexifier petit à petit pour qu'ils se rapprochent de ton service et de ton JavaBean...

  14. #34
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    Ah, d'après l'api Timestamp implémente bien l'interface serialisable.
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  15. #35
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    J'ai réduit ma classe Survey à juste un attribut de type int.
    Et même là j'ai l'erreur :
    Fault - ; nested exception is:
    java.io.IOException: No serializer found for class survey.Survey in registry org.apache.axis.encoding.TypeMappingDelegate@1bfefb

    AxisFault
    faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
    faultSubcode:
    faultString: java.io.IOException: No serializer found for class survey.Survey in registry org.apache.axis.encoding.TypeMappingDelegate@1bfefb
    faultActor:
    faultNode:
    faultDetail:
    {http://xml.apache.org/axis/}hostname:natoine-laptop
    Au fait, il n'y a pas une histoire de balise <beanMapping>???
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  16. #36
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    Ca y est ça marche.
    Je poste mon wsdd si ça peut en aider d'autres.

    <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <service name="creator" style="java:RPC">
    <parameter name="className" value="web_services.Creator"/>
    <parameter name="allowedMethods" value="*"/>
    <beanMapping qname="myNS:Survey" xmlns:myNS="urn:BeanService"
    languageSpecificType="java:survey.Survey"/>
    </service>
    </deployment>
    Vous noterez donc l'usage de la balise <beanMapping> pour indiquer les bean à serialiser.

    Par contre le type Timestamp fout le bordel.

    Merci pour l'aide précieuse d'arnaud03.
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  17. #37
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    La suite :

    J'aimerai faire un client pour mon web service, qui me permette de récupérer les objets serialisés.

    Il y a un exemple de comment faire un client dans http://karamimed.developpez.com/j2ee/tutoriels/axis/#LV
    Seulement le seul type de retour proposé dans l'exemple est un type primitif.
    Il n'y a pas d'objets serialisés dans l'exemple.

    Moi je récupére un Object[] là ou j'aimerai avoir un ArrayList<Survey>...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CreatorService _service = new CreatorServiceLocator();
    Creator port = _service.getcreator();
    Object[] _surveys = port.getMySurveys(1);
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  18. #38
    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 natoine Voir le message
    Moi je récupére un Object[] là ou j'aimerai avoir un ArrayList<Survey>...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CreatorService _service = new CreatorServiceLocator();
    Creator port = _service.getcreator();
    Object[] _surveys = port.getMySurveys(1);
    Les tableaux/listes ne sont pas sérialisés/désérialisés de la même manière selon les frameworks et leurs types de databinding.
    Tu peux toujours utiliser un javabean personnalisé ou bien tout simplement recréer ton ArrayList<> à partir du Object[].

  19. #39
    Membre averti
    Avatar de natoine
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2007
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 393
    Points : 343
    Points
    343
    Par défaut
    Nouveau problème.
    Mon Web Service fonctionne parfaitement sous ubuntu mais dés que j'essaye de le déployer sur Mac os X ça plante.

    En fait, mon Web Service fait des requêtes à une base en utilisant JDBC.
    Et c'est cette partie là qui ne fonctionne pas sous Mac Os X.

    Impossible de créer une connection à la base dans Axis.
    Pourtant j'ai bien mis la lib nécessaire dans WEB-INF/lib...
    Et on a testé un simple main qui s'appuie sur la même lib pour créer une connection hors axis, ça marche.

    Si vous avez une piste?

    Merci d'avance.
    www.natoine.fr
    natoine.developpez.com
    Principalement du Java avec un soupçon de réseaux sociaux.

  20. #40
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    salut natoine,

    est ce que tu as une idée sur comment on utilise les web services pour établir la communication entre deux applications?

    Merci

Discussions similaires

  1. Utilisation de WebServices avec TestComplete
    Par irliam dans le forum Outils
    Réponses: 3
    Dernier message: 09/04/2013, 16h49
  2. Webservice avec AXIS , Eclipse et retour de type complexe
    Par Ashen-Shugar dans le forum Services Web
    Réponses: 2
    Dernier message: 26/12/2007, 21h24
  3. Utiliser des webservices avec nusoap
    Par budiste dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 30/03/2006, 11h56

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