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

Persistance des données Java Discussion :

Erreur lors de la persistence JPA+PostgreSQL


Sujet :

Persistance des données Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut Erreur lors de la persistence JPA+PostgreSQL
    Bonjour,

    Je viens vous demander de l'aide parce que je ne trouve plus aucun moyens sur le net.

    Je veux persister sur une BD Postgresql, j'ai modifié le persistence.xml, rajouter un fichier postgresql-ds.xml dans le server/default/deply, rajouté le driver postgres dans le server/lib/

    La création des tables se fait bien, mais quand je veux persister j'ai une jolie erreur et je ne peux rien ajouter dans la BD.

    Voici l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    java.lang.reflect.UndeclaredThrowableException
    	at $Proxy0.ajoutUtilisateur(Unknown Source)
    	at entities.InsertData.main(InsertData.java:28)
    Caused by: java.rmi.MarshalException: Failed to communicate.  Problem during marshalling/unmarshalling; nested exception is: 
    	java.io.NotSerializableException: entities.Utilisateur
    voici le persistence.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
    	<persistence-unit name="serveurAppliJPA">
    	<!-- le fournisseur JPA est Hibernate -->
    		<provider>org.hibernate.ejb.HibernatePersistence</provider>
    	<jta-data-source>java:/PGDS</jta-data-source>
    		<mapping-file>META-INF/orm.xml</mapping-file>
    		<properties>
    		<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
    			<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
    		</properties>
    	</persistence-unit>
    </persistence>
    le postgresql-ds.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <datasources>
      <local-tx-datasource>
        <jndi-name>PGDS</jndi-name>
        <connection-url>
        jdbc:postgresql://localhost:5432/baseTest
        </connection-url>
        <driver-class>org.postgresql.Driver</driver-class>
        <user-name>postgres</user-name>
        <password>XXXX</password>
      </local-tx-datasource>
    </datasources>
    enfin le code d'insertion
    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
    public class InsertData {
     
    	public static void main(String[] args) {
    	      InitialContext ctx;
    		try {
    			ctx = getInitialContext();
    			CompteDAO lecompte = (CompteDAO) ctx.lookup("CompteDAOBean/remote");
     
    		      Utilisateur unUser = new Utilisateur();
    		      unUser.setIdUtilisateur(2);
    		      unUser.setEmail("lkljk");
    		      unUser.setPwd("jkj");
     
    		      lecompte.ajoutUtilisateur(unUser);
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
     
    	@SuppressWarnings("unchecked")
    	private static InitialContext getInitialContext() throws Exception{
    		Hashtable props = new Hashtable();
    		props.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
    		props.put("java.naming.factoy.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
    		props.put("java.naming.provider.url", "localhost");
     
    		return new InitialContext(props);
     
    	}
    }
    Un grand merci

  2. #2
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Fais voir ta classe Utilisateur !
    Apparement elle n'est pas Serializable.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    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
    package entities;
     
    import java.util.ArrayList;
    import java.util.List;
     
    import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.OneToMany;
     
    @Entity
    public class Utilisateur {
     
    	private int idUtilisateur;
    	private String email;
    	private String pwd;
    	private List <Projet> projets;
     
    	public Utilisateur(String email, String pwd) {
    		this.email = email;
    		this.pwd = pwd;
    		this.projets=new ArrayList<Projet>();
    	}
     
    	public Utilisateur() {
    		this.email = null;
    		this.pwd = null;
    	}
     
    	@Id @GeneratedValue
    	@Column(name="IDUTILISATEUR")
    	public int getIdUtilisateur() {
    		return idUtilisateur;
    	}
    	public void setIdUtilisateur(int id) {
    		this.idUtilisateur = id;
    	}
    	public String getEmail() {
    		return email;
    	}
    	public void setEmail(String email) {
    		this.email = email;
    	}
    	public String getPwd() {
    		return pwd;
    	}
    	public void setPwd(String pwd) {
    		this.pwd = pwd;
    	}
    	@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
    	@JoinColumn(name="IDUTILISATEUR")
    	public List<Projet> getListeProjet(){
    		return projets;
    	}
     
    	public void setListeProjet(List<Projet> projets){
    		this.projets = projets;
    	}
     
    	public Projet getProjets(int idProjet) {
    		return projets.get(idProjet);
    	}
     
    	public void setProjets(Projet leProjet) {
    		this.projets.add(leProjet);
    }
    	}
    Justement dans les bouqins c'est écrit qu'il faut que se soit serializable mais dans les exemple ça n'est jamais serializable!

    Sinon j'ai vu sur d'autres forum que ça pourrait être mal référencé ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CompteDAO lecompte = (CompteDAO) ctx.lookup("CompteDAOBean/remote");
    Du coup j'ai rajouté le nom du package appartentant aux bean comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CompteDAO lecompte = (CompteDAO) ctx.lookup("dao/CompteDAOBean/remote");
    du coup j'ai cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javax.naming.NameNotFoundException: dao not bound

  4. #4
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Il te manquerait pas un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <class>entities.Utilisateur </class>
    dans ton persistence.xml ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    D'après ce que j'ai compris l'attribut class n'est pas obligatoire? J'ai essayé et j'ai toujours le meme probleme.

  6. #6
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Tu as bien defini ta classe Projet ?

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    voici mon persistence.xml actuel
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence>
    	<persistence-unit name="serveurAppliJPA">
    		<jta-data-source>java:/PGDS</jta-data-source>
    		<class>entities.Utilisateur</class> 
    		<class>entities.Projet</class>
    		<properties>
     
    			<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
    			<property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/> 
    			<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
    			<property name="hibernate.show_sql" value="true"/>
    			<property name="hibernate.query.substitutions" value="true"/>
    		</properties>
    	</persistence-unit>
    </persistence>
    La BD se crée toujours automatiquement, mais ça bloque à la persistence

  8. #8
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Sur quelle ligne ca plante ?

    Dans ta methode ajouteUtilisateur ?
    Si c'est le cas fais voir cette methode.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    oui c'est exactement ici que ça plante, la methode fait juste un persist avec un objet utilisateur mais comme s'il ne connaissait pas cette objet
    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
    package dao;
     
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
     
    import entities.Utilisateur;
     
    @Stateless
    public class CompteDAOBean implements CompteDAO {
     
    	@PersistenceContext(unitName="serveurAppliJPA")
    	EntityManager entityManager;
     
    	public void ajoutUtilisateur(Utilisateur utilisateur) {
    		Utilisateur us=new Utilisateur("hjhj","hhhh");
    		//entityManager.persist(us);
     
    	}
     
    	public Utilisateur trouverUtilisateur(int id) {
    		return entityManager.find(Utilisateur.class,id);
    	}
     
    }
    Edit: c'est même pas sur le persist comme vous pouvez le voir puisque j'ai commenté la ligne, y a une référence qui passe pas.

    Je suis dans deux packages différents, mais je ne pense pas que ça pose probleme?
    Quand j'interroge avec cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CompteDAO lecompte = (CompteDAO) ctx.lookup("CompteDAOBean/remote");
    j'ai l'erreur java.lang.reflect.UndeclaredThrowableException
    at $Proxy0.ajoutUtilisateur(Unknown Source)
    Quand j'interroge avec le nom du package sans grande conviction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CompteDAO lecompte = (CompteDAO) ctx.lookup("dao/CompteDAOBean/remote");
    j'ai javax.naming.NameNotFoundException: dao not bound

    Sinon je suis en remote pour l'interface (j'ai testé local) et le bean en stateless

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    j'ai essayé un autre code d'insertion
    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
    public class InsertData {
    	public static void main(String[] args) {
    		try {
    			Context context = new InitialContext();
    			CompteDAO lecompte = (CompteDAO) context.lookup("CompteDAOBean/remote");
     
    		      Utilisateur unUser = new Utilisateur();
    		     unUser.setIdUtilisateur(2);
    		      unUser.setEmail("lkljk");
    		      unUser.setPwd("jkj");
     
    		      lecompte.ajoutUtilisateur(unUser);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    et j'ai l'erreur suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
    	at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
    	at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
    	at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
    	at javax.naming.InitialContext.lookup(Unknown Source)
    	at entities.InsertData.main(InsertData.java:23)
    La ligne 23 correspond à context.lookup("CompteDAOBean/remote");
    ça viendrait de mon JNDI, 'ai regardé dans la console mais j'arrive pas trop à interpréter

  11. #11
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Attends là c'est plusla meme erreur !!!!
    Tu as changé quelque chose.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    j'ai changé la façon d'interroger le context et le lookup rien de plus. La class java que j'exécute pour persister mes données...

  13. #13
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Et c'est toujours sur cette ligne que ca plantait ?

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    non dans l'autre cas c'etait lors de l'appel de l'interface, la c'est lors du contexte

  15. #15
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    et cette interface CompteDAO, elle ressemble a quoi ?

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    J'aurai tout posté lol, mais encore merci de m'aider, la voici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    package dao;
    import javax.ejb.Remote;
    import entities.Utilisateur;
     
    @Remote 
    public interface CompteDAO {
    	public void ajoutUtilisateur(Utilisateur utilisateur);
    	public Utilisateur trouverUtilisateur(int id);
     
    }
    J'ai fais un projet web dynamique avec servlet+jsp et ça bloc bien lorsque j'appel ajoutUtilisateur avec la même erreur (celle du proxy)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ava.lang.reflect.UndeclaredThrowableException
    	$Proxy118.ajoutUtilisateur(Unknown Source)

  17. #17
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Oui autant pour moi, mais je m'y perds un peu.

    ce qui m'etonn c'est cette annotation :
    Ton id est generé, mais pourtant tu le sette avec un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unUser.setIdUtilisateur(2);
    Si il est généré, ton setId devrait etre private, non ? et en plus il a du declarer un generateur dans postgreSQL

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    oui je suis d'accord avec toi, cette phase de test était parce que je ne vois plus quoi faire mais apparement ça ne cause pas plus de problème de l'attribuer à la main

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    Bon j'ai trouvé apres de longues heures et pour une solution en 3 lignes, je poste:
    Dans mon Bean avant je faisais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void ajoutUtilisateur(Utilisateur utilisateur) {
    		entityManager.persist(utilisateur);
    	}
    en fait il faut faire, mais je ne sais pas vraiment pourquoi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void ajoutUtilisateur(String mail, String pwd) {
    		Utilisateur us = new Utilisateur();
    		us.setEmail(mail);
    		us.setPwd(pwd);
    		entityManager.persist(us);
    	}
    Pour résumer il ne faut pas passer un objet (surement dû à la sérialization d'ailleurs) mais les attribut qu'on set ensuite.
    Si quelqu'un à plus de précision la dessus je suis quand meme preneur.

    Merci

  20. #20
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Ca me semble bizarre ton truc.ca doit etre autre chose, car je fais courament passer mes objets en parametre et ce ne me pose pas ce probleme.
    Ca doit etre lié a ton id généré.Car tu lui faisais un setId sur une valeur inexistante. Donc embrouille dans les identifiants pour Hibernate.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Message d'erreur lors de la persistance
    Par clecle dans le forum JSF
    Réponses: 1
    Dernier message: 05/11/2014, 12h36
  2. erreur lors de la persistance
    Par LOGKiller dans le forum Hibernate
    Réponses: 0
    Dernier message: 17/10/2009, 10h10
  3. Erreur lors la lecture d'une table PostgreSQL
    Par choko83 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 30/04/2008, 14h56
  4. [PostgreSQL] [PostGreSQL] Obtention d'une erreur lors de l'exécution d'une requête
    Par cbombabill dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/03/2008, 11h56
  5. erreur fatale lors de l'installation de PostgreSQL
    Par caro_caro dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 13/02/2008, 18h51

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