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

Java EE Discussion :

Trop grosse quantités de données à transporter? [EJB]


Sujet :

Java EE

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 139
    Points : 50
    Points
    50
    Par défaut Trop grosse quantités de données à transporter?
    Bonjour,

    J'ai développé un EJB assez simple pour m'entraîner. J'ai créé un client de test pour voir si j'arrive bien a accéder aux méthodes distantes et ça marche.

    J'ai voulu par exemple afficher le nombre d'utilisateur de la base de donnée.

    Voici deux méthodes partagée côté EJB:
    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
     
    public String hello() {
            return("il y a "+getAllUtilisateurs().size()+" utilisateurs");
        }
     
    public List<Utilisateur> getAllUtilisateurs() {
            System.out.println("demande de récupération des utilisateurs");
            try {
            Query query = getEm().createQuery("SELECT u FROM Utilisateur u");
            return query.getResultList();
            }
            catch(Throwable th) {
                throw new VisionException("marde");
            }
            }
    J'arrive à afficher le nombre d'utilisateurs côté client (93 utilisateurs) en appelant hello() mais je n'arrive pas avoir la liste complète en appelant getAllUtilisateurs().

    Voici mon exception:
    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
     
    24 juil. 2009 10:15:58 com.sun.corba.ee.impl.encoding.CDRInputStream_1_0 readRMIIIOPValueType
    ATTENTION: "IOP00810211: (MARSHAL) Exception from readValue on ValueHandler in CDRInputStream"
    org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 211 completed: Maybe
            at com.sun.corba.ee.impl.logging.ORBUtilSystemException.valuehandlerReadException(ORBUtilSystemException.java:8428)
            at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:973)
            at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
            at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:475)
            at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1974)
            at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2199)
            at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1211)
            at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:422)
            at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:362)
            at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:328)
            at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
            at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
            at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:896)
            at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:466)
            at com.sun.corba.ee.impl.corba.TCUtility.unmarshalIn(TCUtility.java:296)
            at com.sun.corba.ee.impl.corba.AnyImpl.read_value(AnyImpl.java:610)
            at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_any(CDRInputStream_1_0.java:748)
            at com.sun.corba.ee.impl.encoding.CDRInputStream.read_any(CDRInputStream.java:406)
            at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.readAny(Util.java:504)
            at com.sun.corba.ee.impl.io.ValueHandlerImpl.read_Array(ValueHandlerImpl.java:690)
            at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:359)
            at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:328)
            at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
            at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
            at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:475)
            at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1974)
            at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2199)
            at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1211)
            at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:422)
            at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:362)
            at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:328)
            at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
            at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
            at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:475)
            at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl$14.read(DynamicMethodMarshallerImpl.java:368)
            at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl.readResult(DynamicMethodMarshallerImpl.java:466)
            at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:195)
            at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:152)
            at com.sun.corba.ee.impl.presentation.rmi.bcel.BCELStubBase.invoke(BCELStubBase.java:225)
            at vision.dao.__IDaoRemote_Remote_DynamicStub.getAllUtilisateur(vision/dao/__IDaoRemote_Remote_DynamicStub.java)
            at vision.dao._IDaoRemote_Wrapper.getAllUtilisateur(vision/dao/_IDaoRemote_Wrapper.java)
            at TestDao.test1(TestDao.java:40)
            at TestDao.main(TestDao.java:55)
    Caused by: java.io.IOException: Mismatched serialization UIDs : Source (Rep. IDRMI:oracle.toplink.essentials.indirection.IndirectList:C736541957C385C5:7070E88CAC21B40B) = 7070E88CAC21B40B whereas Target (Rep. ID RMI:oracle.toplink.essentials.indirection.IndirectList:C736541957C385C5:8CE233D0CA77EED4) = 8CE233D0CA77EED4
            at com.sun.corba.ee.impl.util.RepositoryId.useFullValueDescription(RepositoryId.java:650)
            at com.sun.corba.ee.impl.io.ValueHandlerImpl.useFullValueDescription(ValueHandlerImpl.java:420)
            at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:419)
            at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:362)
            at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:328)
            at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
            ... 41 more
    Je me demande si ce n'est pas la taille des données à transporter de l'EJB au client.
    Help!!

    Merci beaucoup

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    C'est simple, la trace te dit que d'un côté (serveur ou client) tu as :
    oracle.toplink.essentials.indirection.IndirectList => 7070E88CAC21B40B
    Et que de l'autre tu as
    oracle.toplink.essentials.indirection.IndirectList => 8CE233D0CA77EED4

    La version de toplink utilisée côté client est-elle bien la même que celle côté serveur ?

    Mais je trouve ça bizare que tu en ai besoin côté client.
    Peux tu montrer le code de ton "Utilisateur", c'est cette classe qui doit poser des problèmes de sérialization.

    Je pense que ça n'a rien a voir avec la taille des données. (93 utilisateurs ce n'est pas énorme quand même)

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 139
    Points : 50
    Points
    50
    Par défaut
    Voici l'entité Utilisateur. C'est vrai que j'ai une librairie de TopLink côté client (je sais pas ce qu'elle fout la). J'inclue également côté client le JAR du serveur.

    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
     
    @Entity
    public class Utilisateur extends Personne implements Serializable {
        @OneToMany(mappedBy = "evaluateur")
        private List<NotationPersonne> notationsDonnees;
     
        private String login;
        private String password;
        private String roleU;
     
     
        @OneToMany(mappedBy = "utilisateur", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
        private List<LienUtilisateurAgence> liensUtilisateurAgence;
        @OneToMany(mappedBy = "utilisateur", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
        private List<LienUtilisateurExploitation> liensUtilisateurSite;
        private static final long serialVersionUID = 1L;
        @OneToMany(mappedBy = "utilisateur")
        private List<ConnexionVision> connectionsVision;
     
        public Utilisateur() {
            super();
            liensUtilisateurAgence = new Vector<LienUtilisateurAgence>();
            liensUtilisateurSite = new Vector<LienUtilisateurExploitation>();
            connectionsVision = new Vector<ConnexionVision>();
     
        }
     
     
        @PrePersist
        public void initLoginPass() {
            login=getPrenom().toLowerCase()+"."+getNom().toLowerCase();
            password=getNom().substring(0,3).toLowerCase()+getPrenom().substring(0,2).toLowerCase();
        }
     
        public Utilisateur(String titre, String nom, String prenom, String role, Agence agence, Fonction fonction) {
            super(titre, nom, prenom, new Adresse());
            this.roleU = role;
            liensUtilisateurAgence = new Vector<LienUtilisateurAgence>();
            liensUtilisateurSite = new Vector<LienUtilisateurExploitation>();
            LienUtilisateurAgence lien = new LienUtilisateurAgence();
            lien.setAgence(agence);
            lien.setFonction(fonction);
            lien.setUtilisateur(this);
            liensUtilisateurAgence.add(lien);
        }
     
    //getters et setters
     
    }

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

Discussions similaires

  1. Cherche grosse quantité de données pour entrainement.
    Par berceker united dans le forum Approche théorique du décisionnel
    Réponses: 4
    Dernier message: 17/09/2014, 14h17
  2. [JTable] Pagination avec de grosses quantités de données
    Par virus321 dans le forum Composants
    Réponses: 6
    Dernier message: 27/11/2013, 12h42
  3. ObservableCollection ajouter une grosse quantité de données
    Par draco951 dans le forum Windows Presentation Foundation
    Réponses: 12
    Dernier message: 08/10/2013, 16h14
  4. Réponses: 19
    Dernier message: 06/11/2010, 23h07
  5. "Champ trop petit pour quantité de données"
    Par Miss Ti dans le forum Access
    Réponses: 9
    Dernier message: 25/07/2006, 21h56

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