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 :

Passage d'un tableau de class perso


Sujet :

Services Web Java

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 51
    Points
    51
    Par défaut Passage d'un tableau de class perso
    Bonjour à tous!

    Je pense que cette question a déjà été posée mais j'arrive à trouver la réponse qu'il me faut...

    Voici quelques explications :

    1. j'ai un backend qui utilise les objets que j'ai créés pour lire un DB, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class Firm implements java.io.Serializable{
    	private int firmId;
    	private String firmName;
            ... getter & setter
    }
    2. mon implémentation du service qui va chercher les infos en DB (tout fonctionne correctement) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public Firm[] getAllFirmData(String param){
     
    		ArrayList firms = new ArrayList();
    		...
    		return (Firm[]) firms.toArray();
    }
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public Firm getFirmData(String firmId){
     
    		Firm firm = null;
    		...
    		return firm;
     
    	}
    3. mon frontend :
    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
    try{
     
    	DBApplicationControlService service = new DBApplicationControlServiceLocator();
     
    	DBApplicationControl port = service.getDBApplicationControl();
     
    	Firm firm = port.getFirmData("0");
    	System.out.println("firm : " + firm.getNameContact());
     
    	Firm[] firms = port.getAllFirmData(null);
    	System.out.println("firm no 1: " + firms[0].getNameContact());
     
    } catch (ServiceException e) {
    	e.printStackTrace();
    } catch (RemoteException e1) {
    	e1.printStackTrace();
    }
    Sauf que là quand je lance mon frontend j'ai cette erreur :
    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
    firm : test name contact
    AxisFault
     faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
     faultSubcode: 
     faultString: java.lang.ClassCastException: [Ljava.lang.Object;
     faultActor: 
     faultNode: 
     faultDetail: 
    	{http://xml.apache.org/axis/}hostname:launnscotture
     
    java.lang.ClassCastException: [Ljava.lang.Object;
    	at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
    	at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
    	at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
    	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:633)
    	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:719)
    	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)
    	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
    	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
    	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
    	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
    	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
    	at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
    	at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
    	at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
    	at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
    	at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
    	at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
    	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:2443)
    	at org.apache.axis.client.Call.invoke(Call.java:2366)
    	at org.apache.axis.client.Call.invoke(Call.java:1812)
    	at ch.control.DBApplicationControlSoapBindingStub.getAllFirmData(DBApplicationControlSoapBindingStub.java:269)
    	at test.client.WSClientTester.main(WSClientTester.java:28)
    Je comprends bien que je ne peux pas passer un tableau de Firm dans mon web service, mais alors comment faire dans ce cas là?

    Merci d'avance à ceux qui pourront m'aider

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 51
    Points
    51
    Par défaut
    Bon alors j'ai finalement trouvé mon erreur! Après des heures de recherche pour une "betise"...

    à la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Firm[] getAllFirmData(String param){
     
    	...
    	return (Firm[]) firms.toArray();
    }
    simplement (ok c'est peut etre un peu dégueulasse) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Firm[] f = new Firm[firms.size()];
     
    	for(int i=0;i<firms.size();i++){
    		f[i] = (Firm)firms.get(i);
    	}
     
    	return f;

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

Discussions similaires

  1. Passage de tableau de class ?
    Par loula427 dans le forum Langage
    Réponses: 3
    Dernier message: 15/03/2011, 19h55
  2. Passage d'un tableau d'une classe.
    Par TocTocKiéLà? dans le forum C++
    Réponses: 9
    Dernier message: 31/07/2007, 03h39
  3. Réponses: 9
    Dernier message: 08/07/2007, 21h57
  4. Passage d'un tableau par référence?
    Par sebduth dans le forum C
    Réponses: 9
    Dernier message: 16/07/2003, 19h32
  5. [VB6]Passage d'un tableau dans une DLL écrite en delphi
    Par flash dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 20/09/2002, 11h15

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