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: Exception: "No Deserializer found to deserialize a "


Sujet :

Services Web Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Par défaut AXIS: Exception: "No Deserializer found to deserialize a "
    Bonjour,
    Je suis nouvelle en ce qui concerne Axis et depuis hier je deviens folle en essayant de trouver mon erreur!!!
    Pourriez-vous me suggérer une solution?
    Merci
    Je ne sais pas les informations dont vous avez besoin... aussi je vous donne le programme server, le wsdd et le programme client. L'application est simple car je voulais seulement m'assurer que je pouvais obtenir une information avec AXIS... mais je ne peux pas!!
    L'application est AIServicio.java qui contient une procédure de modification d'un paramètre. L'objet Output est retourne seulement un code d'erreur et l'erreur elle-même.

    Le client est AIClient.java qui appelle cette procédure et écrit le resultat sur la page WEB-

    ==================================
    J'utilise Axis 1-4 et Tomcat 5.1.9.

    J'obtiens l'exception suivante:
    No Deserializer found to deserialize a 'http://schemas.xmlsoap.org/soap/encoding/:string' using encoding style 'http://schemas.xmlsoap.org/soap/encoding/'.


    SERVEUR

    AI.wsdd:
    <?xml version="1.0" encoding="UTF-8" ?>
    - <wsdl:definitions targetNamespace="http://135.88.100.235:8081/services/services/AI" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://135.88.100.235:8081/services/services/AI" xmlns:intf="http://135.88.100.235:8081/services/services/AI" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns1="urn:AI" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlnssd="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 targetNamespace="urn:AI" xmlns="http://www.w3.org/2001/XMLSchema">
    <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
    - <complexType name="Output">
    - <sequence>
    <element name="PError" type="xsd:int" />
    <element name="SError" nillable="true" type="soapenc:string" />
    </sequence>
    </complexType>
    </schema>
    </wsdl:types>
    - <wsdl:message name="AImodif_p1Request">
    <wsdl:part name="p1_old" type="soapenc:string" />
    <wsdl:part name="p1_new" type="soapenc:string" />
    </wsdl:message>
    - <wsdl:message name="AImodif_p1Response">
    <wsdl:part name="AImodif_p1Return" type="tns1:Output" />
    </wsdl:message>
    - <wsdl:portType name="AIServicio">
    - <wsdl:operation name="AImodif_p1" parameterOrder="p1_old p1_new">
    <wsdl:input message="impl:AImodif_p1Request" name="AImodif_p1Request" />
    <wsdl:output message="impl:AImodif_p1Response" name="AImodif_p1Response" />
    </wsdl:operation>
    </wsdl:portType>
    - <wsdl:binding name="AISoapBinding" type="impl:AIServicio">
    <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
    - <wsdl:operation name="AImodif_p1">
    <wsdlsoap:operation soapAction="" />
    - <wsdl:input name="AImodif_p1Request">
    <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://AI" use="encoded" />
    </wsdl:input>
    - <wsdl:output name="AImodif_p1Response">
    <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://135.88.100.235:8081/services/services/AI" use="encoded" />
    </wsdl:output>
    </wsdl:operation>
    </wsdl:binding>
    - <wsdl:service name="AIServicioService">
    - <wsdl:port binding="impl:AISoapBinding" name="AI">
    <wsdlsoap:address location="http://135.88.100.235:8081/services/services/AI" />
    </wsdl:port>
    </wsdl:service>
    </wsdl:definitions>


    AIServicio.java

    That contains a procedure AIModif_p1 (String p1_old, String p1_new). This procedure returns an Output object that contains the error code and the error message.

    CLIENT
    AICliente.java
    import.....
    public class AICliente extends HttpServlet
    {

    public AICliente() {}

    private static URL url = null;
    private static Call call = null;
    private static SOAPMappingRegistry smr = null;
    private static BeanSerializer beanSer = null;
    private static Output output = null;

    public static void soapInit() throws IOException
    {
    url = new URL("http://135.88.100.235:8081/services/services/AI");
    call = new Call();
    beanSer = new BeanSerializer();
    smr = new SOAPMappingRegistry();
    smr.mapTypes(Constants.NS_URI_SOAP_ENC,
    new QName("urn:AI","Output"),
    Output.class, beanSer, beanSer);
    call.setSOAPMappingRegistry(smr);
    call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
    call.setTargetObjectURI("urn:AI");
    output= new Output();
    }

    public static Output AImodif_p1( String p1_old, String p1_new)
    throws IOException
    {
    System.out.println("Entewring Cliente AImodif_p1....");
    System.out.println("p1_old="+p1_old+" p1_new="+p1_new);

    soapInit();

    call.setMethodName("AImodif_p1");

    Vector params = new Vector();
    try
    {
    params.addElement(new Parameter("p1_old",String.class,p1_old,null));
    params.addElement(new Parameter("p1_new",String.class,p1_new,null));
    call.setParams(params);
    }
    catch (Exception e)
    {
    output.setPError(-1);
    output.setSError(e.getMessage());
    System.out.println("ERROR: Generated fault: " + e.getMessage());
    return output;
    };

    System.out.println("AImodif_p1.....Server answering ...");
    Response resp=null; try
    {
    System.out.println("url="+url);
    resp = call.invoke(url, "");
    }
    catch (SOAPException e)
    {
    System.out.println("SOAPException in client AImodif_p1...");
    output.setPError(-1);
    output.setSError(e.getMessage());
    System.out.println("Caught SOAPException (" + e.getFaultCode() + "): [" +
    e.getMessage()+"]");
    return output;
    } if (!resp.generatedFault())
    {
    Parameter ret = resp.getReturnValue();
    output = (Output)ret.getValue();
    }
    else
    {
    Fault fault = resp.getFault();
    output.setPError(-1);
    output.setSError(resp.getFault().getFaultString());
    System.out.println("ERROR: Generated fault: " + fault);
    }
    return output;
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    PaintClient ps= new PaintClient();
    String p1_old="/";
    String p1_new = request.getParameter("p1_new");

    out.println("<center>PARAMETER 1 </center>");
    out.println(ps.PaintClientHtml("Modif p1", AImodif_p1(p1_old,p1_new)));
    }

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    salut,

    n'oublie pas la balise CODE!!!

    ça doit etre le type String qui est mal définit; utilise le t ype string de xmlschema

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <wsdl:part name="p1_old" type="xsd:string" />

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Par défaut
    Peux-tu être un peu plus précis? Oú dois-je ajouter ce que tu marques?

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par celia05es
    Peux-tu être un peu plus précis? Oú dois-je ajouter ce que tu marques?
    dans la déclaration des parametres des messages dans le wsdl, si il est generé à partir des classes.. tu le fais avec quel outil?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Par défaut
    AIServicio.java contient la procédure AImodif_p1(String p1_old, String p1_new). La sortie de cette procédure est un array de 2 éléments qui contient un entier (code d'erreur) et un String (message erreur). Cet objet est: Output.java

    Maintenant, je crée à la main le fichier suivant:

    AIDescriptor.wsdd

    <deployment xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

    <service name="AI" provider="java:RPC">^M
    <parameter name="className" value="AI.AIServicio"/>
    <parameter name="allowedMethods" value="*"/>

    <beanMapping qname="ns:Output" xmlns:ns="urn:AI"
    languageSpecificType="java:salidaServicios.Output"/>
    </service>
    </deployment>

    Ensuite, j'exécute solarisDeployerAxis.sh: qui contient:

    java org.apache.axis.client.AdminClient -lhttp://localhost:808/services/servlet
    /AxisServlet AIDescriptor.wsdd


    Le fichier AI.wsdl est alors crée:.

    Je suppose que le problème doit résider dans l'appel à AXIS:
    En effet, j'ai modifié le résultat de la procédure "AImodif_p1. J'ai mis un String comme sortie et j'ai utilisé l'appel à AXIS suivant:
    ==========================
    url = new URL("http://135.88.100.235:8081/services/services/AI");
    call = new Call();
    smr = new SOAPMappingRegistry();
    StringDeserializer sd = new StringDeserializer();
    smr.mapTypes(Constants.NS_URI_SOAP_ENC,
    new QName("http://schemas.xmlsoap.org/soap/encoding/","string"),
    null, null, sd);

    call.setSOAPMappingRegistry(smr);
    call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
    call.setTargetObjectURI("urn:AI");

    ======================

    Ça marche!!!! Mais si je modifie l'appel et mets:
    url = new URL("http://135.88.100.235:8081/services/services/AI");
    call = new Call();
    BeanSerializer beanSer = new BeanSerializer();
    smr = new SOAPMappingRegistry();
    smr.mapTypes(Constants.NS_URI_SOAP_ENC,
    new QName("urn:AI","Output"),
    Output.class, beanSer, beanSer);

    call.setSOAPMappingRegistry(smr);
    call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
    call.setTargetObjectURI("urn:AI");


    j'obtiens l'exception!!!

    Merci de votre aide car je suis désespérée!!!

  6. #6
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Par défaut
    Problem solved adding the string mapping
    Thank you all.

  7. #7
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 2
    Par défaut
    Citation Envoyé par celia05es Voir le message
    Problem solved adding the string mapping
    Thank you all.
    Bonjour,

    Ou as-tu ajouté le mapping STP ?
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Axis]Exception sur webservice
    Par ForzaInter dans le forum Services Web
    Réponses: 0
    Dernier message: 20/07/2012, 15h57
  2. Réponses: 3
    Dernier message: 27/05/2012, 13h25
  3. Mapping Exception : component class not found
    Par lion13 dans le forum Hibernate
    Réponses: 2
    Dernier message: 06/05/2008, 14h30
  4. [Axis] Exception serveur lors du retour
    Par Tiaps dans le forum Services Web
    Réponses: 2
    Dernier message: 15/04/2008, 15h48

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