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

Hibernate Java Discussion :

EJB3 et Hibernate sous Eclipse


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de mascoco
    Profil pro
    chef
    Inscrit en
    Octobre 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : chef

    Informations forums :
    Inscription : Octobre 2006
    Messages : 66
    Par défaut EJB3 et Hibernate sous Eclipse
    Bonjour,

    Voilà après presque 3 jours de souffrance, je ne trouve toujours pas de solution, en fait j'ai un projet existant sur NetBeans sur lequel je travaille, j'ai repris ce projet pour ajouter des fonctionnalités avec un plugin qui marche sur Eclipse, contraint de faire une migration vers Eclipse de NetBeans de tout le projet EJB3 (entity + sessionBean), mais avant ça j'ai essayé de faire un exemple sour eclipse avec EJB3 et Hibernate car l'ancien projet a été fait avec Hibernate (je ne sais pas pourquoi), probablement pour piloter le persistance ...moi je ne suis pas douillé dans ce domaine

    bref, mon souci c'est qu'avec NetBeans on fait tout avec l'assistant mais sur eclipse c'est manuel, j'ai créé un projet EJB qui s'appelle HelloEJB aussi un projet HelloEJBEAR et HelloEJBCLient en annexe pour tester, jusqu'ici tout va bien, le problème c'est quand je voulais tester les entity avec ma base MySQL, j'ai crée une JNDI sur le serveur GlassFish avec le pool de connexion comme elle était avec netBeans, je l'ai fait la console Admin de glassfish (ça je maitrise bien), maintenant je cherche comment mettre en relation Hibernate (les librairies déjà importées dans mon lib et aussi le lib de glassfish) ?

    j'ai crée un fichier persistence.xml et je l'ai mis dans META-INF dont le contenu est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?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="Sophia2-ejbPU" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>JNDI_sophia</jta-data-source>
        <properties>
          <property name="hibernate.hbm2ddl.auto" value="update"/>
        </properties>
      </persistence-unit>
    </persistence>
    le code de mes classes :

    Param.java (entity)
    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
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
     
    package entities;
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
     
     
    import java.io.Serializable;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.NamedQueries;
    import javax.persistence.NamedQuery;
    import javax.persistence.Table;
     
    /**
     *
     * @author greg
     */
    @Entity
     
    @NamedQueries({
        @NamedQuery(name = "Param.allParams", query = "SELECT p FROM Param p")
    })
    @Table(name="Param")        
    public class Param implements Serializable {
     
        private static final long serialVersionUID = 1L;
     
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;
     
        private String coordX;
     
        private String coordY;
     
        private String zoom;
     
        private String clef;    
     
        public Long getId() {
            return id;
        }
     
        public void setId(Long id) {
            this.id = id;
        }
     
        @Override
        public int hashCode() {
            int hash = 0;
            hash += (id != null ? id.hashCode() : 0);
            return hash;
        }
     
        @Override
        public boolean equals(Object object) {
            // TODO: Warning - this method won't work in the case the id fields are not set
            if (!(object instanceof Param)) {
                return false;
            }
            Param other = (Param) object;
            if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
                return false;
            }
            return true;
        }
     
        @Override
        public String toString() {
            return "projet.sophia.entityBean.Param[id=" + id + "]";
        }
     
        public String getCoordX() {
            return coordX;
        }
     
        public void setCoordX(String coordX) {
            this.coordX = coordX;
        }
     
        public String getCoordY() {
            return coordY;
        }
     
        public void setCoordY(String coordY) {
            this.coordY = coordY;
        }
     
        public String getZoom() {
            return zoom;
        }
     
        public void setZoom(String zoom) {
            this.zoom = zoom;
        }
     
        public String getClef() {
            return clef;
        }
     
        public void setClef(String clef) {
            this.clef = clef;
        }
     
    }
    SayHello.java (sessionBean) :
    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
     
    package example;
     
    import java.util.ArrayList;
    import java.util.List;
     
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    import javax.persistence.Query;
     
    import entities.Param;
     
     
    @Stateless(name="SayHello", mappedName="ejb/SayHello")
    public class SayHello implements ISayHello {
     
    	@PersistenceContext
    	private EntityManager em;
     
    	@Override
    	public String getMessage() {
     
    		return "Hello Man";
    	}
     
    	 @SuppressWarnings("unchecked")
    	public List<Param> allParams(){
    	        List<Param> list_params = new ArrayList<Param>();
    	        try{
    	            Query query =  em.createNamedQuery("Param.allParams");
    	            list_params = query.getResultList();
    	        }
    	        catch(Exception e){
    	            e.printStackTrace();
    	        }
    	        return list_params;
    	    }    
     
     
    }
    L'interface ISayHello.java :
    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
     
    package example;
     
    import java.util.List;
     
    import javax.ejb.Remote;
     
    import entities.Param;
     
    @Remote
    public interface ISayHello {
     
    	public abstract String getMessage ();
    	public List<Param> allParams();
    }
    SayHelloClient.java (pour tester) :

    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
     
    package client;
     
    import javax.naming.InitialContext;
     
    import example.ISayHello;
     
    public class SayHelloClient {
     
    	public void runTest ()throws Exception{
     
    		InitialContext ctx = new InitialContext();
    		ISayHello bean = (ISayHello) ctx.lookup("ejb/SayHello");
    		String result = bean.getMessage();
    		System.out.println(result);
    		System.out.println("Affichage des parametres");
    //		for (Param item : bean.allParams()){
    //			System.out.println("KEY "+item.getClef());
    //			System.out.println("X "+item.getCoordX());
    //			System.out.println("Y "+item.getCoordY());
    //		}
    	}
     
    	public static void main(String[] args) throws Exception {
     
    		SayHelloClient test = new SayHelloClient ();
    		test.runTest();
     
    	}
     
    }
    hier j'ai encore testé avec les lignes commentées dans le client est j'ai eu 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
     
    Exception in thread "main" javax.naming.NameNotFoundException: SayHello not found
    	at com.sun.enterprise.naming.TransientContext.doLookup(TransientContext.java:216)
    	at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:188)
    	at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:192)
    	at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:74)
    	at com.sun.enterprise.naming.RemoteSerialContextProviderImpl.lookup(RemoteSerialContextProviderImpl.java:129)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:154)
    	at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:687)
    	at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:227)
    	at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1846)
    	at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1706)
    	at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:1088)
    	at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:223)
    	at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:806)
    	at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:563)
    	at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2567)
    	at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555)
    mainteant même sans les entity le projet ne marche pas !!!

    j'attends votre retour je suis un peu pressé pour faire cette migration car elle me prends la tête, merci

    Remarque : la table Param existe dans ma base mySQL

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Là, tu as un problème JNDI, il faudrait savoir où pointe ton initialContext.
    Il faudrait regarder également sous quel nom est référencé l'EJB sur le serveur.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif Avatar de mascoco
    Profil pro
    chef
    Inscrit en
    Octobre 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : chef

    Informations forums :
    Inscription : Octobre 2006
    Messages : 66
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Là, tu as un problème JNDI, il faudrait savoir où pointe ton initialContext.
    Il faudrait regarder également sous quel nom est référencé l'EJB sur le serveur.
    Je ne vois pas très bien ce que tu voulais me dire !

    mais dans l'exemple je n'ai pas encore utilisé JNDI que j'ai créée sur le serveur, j'ai juste fait un exemple avec sessionBean, en fait là j'ai refait le projet et ça marche ça m'affiche le fameux Hello world !

    maintenant je cherche comment configurer Hibernate avec ma JNDI et EJB3 sous eclipse

    qu'est ce qu'il me faut comme fichiers xml ? où je dois les mettre ...etc

    Merci.

Discussions similaires

  1. EJB3 et Hibernate sous Eclipse et Glassfish ?
    Par mascoco dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 12/05/2010, 11h20
  2. Réponses: 3
    Dernier message: 15/05/2007, 16h47
  3. Problème Hibernate sous Eclipse
    Par Link3 dans le forum Hibernate
    Réponses: 3
    Dernier message: 05/03/2007, 16h16
  4. [Plugin][Hibernate Synchronizer]Hibernate sous Eclipse
    Par Kalou75 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 01/10/2005, 23h28
  5. Problèmes avec Hibernate (sous Eclipse)
    Par Pierric dans le forum Hibernate
    Réponses: 2
    Dernier message: 07/04/2005, 14h35

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