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 :

Fonction qui retourne un objet complexe


Sujet :

Services Web Java

  1. #1
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 234
    Points : 1 897
    Points
    1 897
    Par défaut Fonction qui retourne un objet complexe
    Bonjour,

    Voici le WSDL :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions targetNamespace="http://Serveur" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://Serveur" xmlns:intf="http://Serveur" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <!--WSDL created by Apache Axis version: 1.4
    Built on Apr 22, 2006 (06:55:48 PDT)-->
     <wsdl:types>
      <schema elementFormDefault="qualified" targetNamespace="http://Serveur" xmlns="http://www.w3.org/2001/XMLSchema">
       <element name="getPrivilege">
        <complexType>
         <sequence>
          <element name="nom" type="xsd:string"/>
          <element name="password" type="xsd:string"/>
         </sequence>
        </complexType>
       </element>
       <element name="getPrivilegeResponse">
        <complexType>
         <sequence>
          <element name="getPrivilegeReturn" type="impl:User"/>
         </sequence>
        </complexType>
       </element>
      
       <complexType name="User">
           <sequence>
               <element name="nom" type="string"></element>
               <element name="password" type="string"></element>
               <element name="privilege" type="int"></element>
           </sequence>
       </complexType>
      </schema>
     </wsdl:types>
    
       <wsdl:message name="getPrivilegeResponse">
    
          <wsdl:part element="impl:getPrivilegeResponse" name="parameters"/>
    
       </wsdl:message>
    
       <wsdl:message name="getPrivilegeRequest">
    
          <wsdl:part element="impl:getPrivilege" name="parameters"/>
    
       </wsdl:message>
    
       <wsdl:portType name="Identification">
    
          <wsdl:operation name="getPrivilege">
    
             <wsdl:input message="impl:getPrivilegeRequest" name="getPrivilegeRequest"/>
    
             <wsdl:output message="impl:getPrivilegeResponse" name="getPrivilegeResponse"/>
    
          </wsdl:operation>
    
       </wsdl:portType>
    
       <wsdl:binding name="IdentificationSoapBinding" type="impl:Identification">
    
          <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    
          <wsdl:operation name="getPrivilege">
    
             <wsdlsoap:operation soapAction=""/>
    
             <wsdl:input name="getPrivilegeRequest">
    
                <wsdlsoap:body use="literal"/>
    
             </wsdl:input>
    
             <wsdl:output name="getPrivilegeResponse">
    
                <wsdlsoap:body use="literal"/>
    
             </wsdl:output>
    
          </wsdl:operation>
    
       </wsdl:binding>
    
       <wsdl:service name="IdentificationService">
    
          <wsdl:port binding="impl:IdentificationSoapBinding" name="Identification">
    
             <wsdlsoap:address location="http://localhost:8080/ws/services/Identification"/>
    
          </wsdl:port>
    
       </wsdl:service>
    
    </wsdl:definitions>
    ... et la classe User est la suivante :

    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
     
    package Type;
     
    import java.io.Serializable;
     
    public class User implements Serializable{
     
        private static final long serialVersionUID = 1L;
     
        private String nom = null;
        private String password = null;
        private Integer privilege = null;
     
        public User (String nom, String password, Integer privilege)
        {
            this.nom = nom;
            this.password = password;
            this.privilege = privilege;
        }
     
     
    // accesseurs get et set
     
    }
    Mais quand j'utilise le service j'obtiens l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    GRAVE: java.io.IOException:
    AxisFault
     faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
     faultSubcode: 
     faultString: java.io.IOException: No serializer found for class Type.User in registry org.apache.axis.encoding.TypeMappingDelegate@78bc3b
     faultActor: 
     faultNode: 
     faultDetail: 
        {http://xml.apache.org/axis/}stackTrace:java.io.IOException: No serializer found for class Type.User in registry org.apache.axis.encoding.TypeMappingDelegate@78bc3b
    Pourquoi je n'arrive pas à accéder à l'objet User ?

    A+

  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,

    Essaie déjà d'ajouter un constructeur sans paramètre à ta classe User, un JavaBean se doit d'en comporter un.

    Ensuite, il est possible qu'il faille modifier un fichier de configuration selon le framework que tu utilises pour déployer ton service web, j'ai par exemple eu le même type d'erreur (corrigée en modifiant le descripteur de déploiement) avec Axis.

  3. #3
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 234
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par Arnaud_03 Voir le message
    Bonjour,
    Ensuite, il est possible qu'il faille modifier un fichier de configuration selon le framework que tu utilises pour déployer ton service web, j'ai par exemple eu le même type d'erreur (corrigée en modifiant le descripteur de déploiement) avec Axis.
    Peux-tu être plus précis ?

    Je fais les tests avec tomcat et axis : rien de plus.

    Merci.

  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
    Pour déployer un service web, Axis utilise un descripteur de déploiement deploy.wsdd. Si le service web utilises un JavaBean, il faut définir dans le fichier deploy.wsdd un élément typeMapping pour la sérialisation/désérialisation de ce JavaBean.

    Voici par exemple ce que tu pourrais écrire pour ton service web :
    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
    <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
        <service name="Identification" provider="java:RPC" style="wrapped" use="literal">		
            ...
     
            <operation
                name="getPrivilege"
                qname="operNS:GetPrivilege"
                xmlns:operNS="http://localhost:8080/ws/services/Identification/"
                returnQName="getPrivilegeReturn"
                returnType="rtns:User"
                xmlns:rtns="http://localhost:8080/ws/services/Identification/"
                soapAction="http://localhost:8080/ws/services/Identification/GetPrivilege">
                <parameter qname="nom" type="tns:string" xmlns:tns="http://www.w3.org/2001/XMLSchema" />
                <parameter qname="password" type="tns:string" xmlns:tns="http://www.w3.org/2001/XMLSchema" />
            </operation>
     
            ...
     
            <parameter name="allowedMethods" value="getPrivilege ..." />
     
            <parameter name="scope" value="..." />
     
            <typeMapping xmlns:ns="http://localhost:8080/ws/services/Identification/"
                qname="ns:User" type="java:Type.User"
                serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
                deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
                encodingStyle="" />
        </service>
    </deployment>
    PS : Il me semble qu'un nom de package commence par convention par une minuscule, non ?

  5. #5
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut retouner un objet complexe a axis
    Bonjour

    J ai le meme probleme que toi, et j aimerai savoir si t as pu resourdre le tien. j ai une classe user dans laquelle j ai crée une methode qui retourne un objet user. je l ai deployé sous axis, la je ne parviens pas a executer la ma methode. j ai cette erreur:

    faultString: java.io.IOException: No serializer found for class Type.User in registry org.apache.axis.encoding.TypeMappingDelegate@...

    j ai modifié mon deploy.wsdd comme expliqué plus haut mais j ai le meme message d' erreur.

    Merci de m apporter votre aide

  6. #6
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 234
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par kt_marilyne Voir le message
    Bonjour

    J ai le meme probleme que toi, et j aimerai savoir si t as pu resourdre le tien.
    Non, je me suis rabattu sur les EJB3 qui permettent le dialogue entre un client léger web et un serveur lourd Java, même avec des objets complexes.

    De plus cette technologie permet la publication de web services ce qui fait que je ne me bloque pas si dans le futur j'ai besoin des web services.

    A+

Discussions similaires

  1. Fonction qui retourne plusieurs valeurs !
    Par casafa dans le forum C++
    Réponses: 20
    Dernier message: 23/04/2014, 16h56
  2. Réponses: 2
    Dernier message: 16/03/2009, 14h37
  3. [Débutant] Fonction qui retourne un objet (classe)
    Par in dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/08/2007, 09h32
  4. Réponses: 7
    Dernier message: 03/12/2004, 12h40
  5. Réponses: 14
    Dernier message: 09/04/2004, 13h44

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