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

Frameworks Web Java Discussion :

Projet EJB3 session avec Hibernate3


Sujet :

Frameworks Web Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 20
    Points : 11
    Points
    11
    Par défaut Projet EJB3 session avec Hibernate3
    Salut tout l monde,
    je suis nouvelle au developpement J2EE sur tout ce qui concerne les frameworks, alors je suis entraine de créer une application J2EE ... dans une phase je dois créer un projet EJB3 session dont je dois utiliser Hibernate3 .. mon souci est que j'ai déjà travaillé avec hibernate mais dans un projet de type web et non pas EJB et je ne sais vraiment pas comment mon projet doit être.. j'ai besoin justement de comprendre la structure parce que normalement dans EJB on a 2 classes basiques : EJBService et EJBserviceRemote .. EJBService contient touts mes methodes dont j aurais besoin a appeler depuis mon client et EJBServiceRemote est celui qui contient la signature de chaque methode .. alors où dois je classer les classes DAO generés par Hibernate et comment les appeler ??? dois j copier leur code dans EJBService et puis les declarer dans EJBServiceRemote pour pouvoir les appeler par mon client ????
    SOS je suis vraiment perturbée

  2. #2
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    alors voilà ce que j'ai fais j'ai tout simplement combiné entre Hibernate et EJB : alors j'ai crée 2 packages : le 1er nommé dao concerne les classes generés par Hibernate et le 2eme nommé "service" concerne les classes de service EJB :

    alors dans le package dao j'ai cette classe "ProduitsStockDAO ":

    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
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    public class ProduitsStockDAO extends BaseHibernateDAO {
     
    	private static final Logger log = LoggerFactory.getLogger(ProduitsStockDAO.class);
    	// property constants
    	public static final String CODE_PDT = "codePdt";
    	public static final String QTE_PDT = "qtePdt";
     
    	/*public Session getSession() {
    		return HibernateSessionFactory.getSession();}*/
     
     
    	public String doSomeThing() {
    		// TODO Auto-generated method stub
    		return "Hello World DAO";
    	}
     
    	public void save(ProduitsStock transientInstance) {
    		log.debug("saving ProduitsStock instance");
    		try {
    			getSession().save(transientInstance);
    			log.debug("save successful");
    		} catch (RuntimeException re) {
    			log.error("save failed", re);
    			throw re;
    		}
    	}
     
    	public void delete(ProduitsStock persistentInstance) {
    		log.debug("deleting ProduitsStock instance");
    		try {
    			getSession().delete(persistentInstance);
    			log.debug("delete successful");
    		} catch (RuntimeException re) {
    			log.error("delete failed", re);
    			throw re;
    		}
    	}
     
    	public ProduitsStock findById(java.lang.Integer id) {
    		log.debug("getting ProduitsStock instance with id: " + id);
    		try {
    			ProduitsStock instance = (ProduitsStock) getSession().get(
    					"dao.ProduitsStock", id);
    			return instance;
    		} catch (RuntimeException re) {
    			log.error("get failed", re);
    			throw re;
    		}
    	}
     
    	public List findByExample(ProduitsStock instance) {
    		log.debug("finding ProduitsStock instance by example");
    		try {
    			List results = getSession().createCriteria("dao.ProduitsStock")
    					.add(Example.create(instance)).list();
    			log.debug("find by example successful, result size: "
    					+ results.size());
    			return results;
    		} catch (RuntimeException re) {
    			log.error("find by example failed", re);
    			throw re;
    		}
    	}
     
    	public List findByProperty(String propertyName, Object value) {
    		log.debug("finding ProduitsStock instance with property: "
    				+ propertyName + ", value: " + value);
    		try {
    			String queryString = "from ProduitsStock as model where model."
    					+ propertyName + "= ?";
    			Query queryObject = getSession().createQuery(queryString);
    			queryObject.setParameter(0, value);
    			return queryObject.list();
    		} catch (RuntimeException re) {
    			log.error("find by property name failed", re);
    			throw re;
    		}
    	}
     
    	public List findByCodePdt(Object codePdt) {
    		return findByProperty(CODE_PDT, codePdt);
    	}
     
    	public List findByQtePdt(Object qtePdt) {
    		return findByProperty(QTE_PDT, qtePdt);
    	}
     
    	public List findAll() {
    		log.debug("finding all ProduitsStock instances");
    		try {
    			String queryString = "from ProduitsStock";
    			Query queryObject = getSession().createQuery(queryString);
    			return queryObject.list();
    		} catch (RuntimeException re) {
    			log.error("find all failed", re);
    			throw re;
    		}
    	}
     
    	public ProduitsStock merge(ProduitsStock detachedInstance) {
    		log.debug("merging ProduitsStock instance");
    		try {
    			ProduitsStock result = (ProduitsStock) getSession().merge(
    					detachedInstance);
    			log.debug("merge successful");
    			return result;
    		} catch (RuntimeException re) {
    			log.error("merge failed", re);
    			throw re;
    		}
    	}
     
    	public void attachDirty(ProduitsStock instance) {
    		log.debug("attaching dirty ProduitsStock instance");
    		try {
    			getSession().saveOrUpdate(instance);
    			log.debug("attach successful");
    		} catch (RuntimeException re) {
    			log.error("attach failed", re);
    			throw re;
    		}
    	}
     
    	public void attachClean(ProduitsStock instance) {
    		log.debug("attaching clean ProduitsStock instance");
    		try {
    			getSession().lock(instance, LockMode.NONE);
    			log.debug("attach successful");
    		} catch (RuntimeException re) {
    			log.error("attach failed", re);
    			throw re;
    		}
    	}
     
    }
    et la classe "BaseHibernateDAO " :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class BaseHibernateDAO implements IBaseHibernateDAO {
     
    	public Session getSession() {
    		return HibernateSessionFactory.getSession();
    	}
     
    }
    et dans l'autre package "service" :

    la classe "EJBServiceStock " qui contient les methodes utilisés par service d'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
    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
    @SuppressWarnings("serial")
     
    @Stateless(mappedName="ejb/EJBServiceStock")
     
    public class EJBServiceStock implements EJBServiceStockLocal,
    		EJBServiceStockRemote,Serializable{
     
    	private ProduitsStockDAO dao=new ProduitsStockDAO();
     
    	/*public Session getSession() {
    		return dao.getSession();
    	}*/
    	public String doSomeThing() {
    		return dao.doSomeThing();
    	}
     
    	public void save(ProduitsStock transientInstance) {		
    		dao.save(transientInstance);
    	}
     
    	public void delete(ProduitsStock persistentInstance){
    		dao.delete(persistentInstance);
    	}
     
    	public ProduitsStock findById(java.lang.Integer id){
    		return dao.findById(id);
    	}
     
    	public List findByExample(ProduitsStock instance){
    		return dao.findByExample(instance);
    	}
     
    	public List findByProperty(String propertyName, Object value) {
    		return dao.findByProperty(propertyName, value);
    	}
     
    	public List findByCodePdt(Object codePdt) {
    		return dao.findByCodePdt(codePdt);
    	}
     
    	public List findByQtePdt(Object qtePdt) {
    		return dao.findByQtePdt(qtePdt);
    	}
     
    	public List findAll() {
    		return dao.findAll();
    	}
     
    	public ProduitsStock merge(ProduitsStock detachedInstance){
    		return dao.merge(detachedInstance);
    	}
    	public void attachDirty(ProduitsStock instance){
    		dao.attachDirty(instance);
    	}
    	public void attachClean(ProduitsStock instance){
    		dao.attachClean(instance);
    	}
    }
    la classe "EJBServiceStockLocal":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @Local
    public interface EJBServiceStockLocal extends IMyBean {
     
    }
    et la classe "EJBServiceRemote"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @Remote
    public interface EJBServiceStockRemote extends IMyBean{
     
     
    }
    et puis l'interface qui déclare toutes les methodes:

    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
    public interface IMyBean extends Serializable {
     
    	//public Session getSession();
     
    	public String doSomeThing();
     
    	public void save(ProduitsStock transientInstance);
     
    	public void delete(ProduitsStock persistentInstance);
     
    	public ProduitsStock findById(java.lang.Integer id);
     
    	public List findByExample(ProduitsStock instance);
     
    	public List findByProperty(String propertyName, Object value);
     
    	public List findByCodePdt(Object codePdt);
     
    	public List findByQtePdt(Object qtePdt);
     
    	public List findAll();
     
    	public ProduitsStock merge(ProduitsStock detachedInstance);
     
    	public void attachDirty(ProduitsStock instance);
     
    	public void attachClean(ProduitsStock instance);
    }
    et en fin la classe de teste client en local :

    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
    public static void main(String[] args) {
    		// TODO Auto-generated method stub
     
    		try {
    			InitialContext ctx = new InitialContext();
    			//EJBServiceStockRemote bean = (EJBServiceStockRemote)ctx.lookup(EJBServiceStockRemote.class.getName());
    			EJBServiceStockRemote bean = (EJBServiceStockRemote)ctx.lookup("ejb/EJBServiceStock");
     
    			/*bean.getSession();
    			System.out.println("BDD est chargée automatiquqement");*/
    			String Resultat = bean.doSomeThing();
    			System.out.println("Resultat : " + Resultat);
     
     
    			//Session ss = bean.getSession();
     
     
    		} catch (NamingException e) {
    			e.printStackTrace();
    		}
    	}
     
    }
    alors là j'essaie justement pour le moment de tester si ça marche avec la methode "doSomething" .

    j'utilise EJB3 et Hibernate3 session mapping et le serveur Glassfish v3 Final sous MyEclipse...

    j'ai les erreurs suivants:

    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
    javax.ejb.EJBException: javax.ejb.EJBException: javax.ejb.CreateException: Could not create stateless EJB
    	at com.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:448)
    	at com.sun.ejb.containers.BaseContainer.getContext(BaseContainer.java:2467)
    	at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1860)
    	at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:200)
    	at com.sun.ejb.containers.EJBObjectInvocationHandlerDelegate.invoke(EJBObjectInvocationHandlerDelegate.java:75)
    	at $Proxy115.doSomeThing(Unknown Source)
    	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.dispatchToMethod(ReflectiveTie.java:146)
    	at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:176)
    	at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:682)
    	at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:216)
    	at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1841)
    	at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1695)
    	at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:1078)
    	at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:221)
    	at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:797)
    	at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:561)
    	at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2558)
    	at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:492)
    	at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:528)
    Caused by: javax.ejb.EJBException: javax.ejb.CreateException: Could not create stateless EJB
    	at com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory.create(StatelessSessionContainer.java:720)
    	at com.sun.ejb.containers.util.pool.NonBlockingPool.getObject(NonBlockingPool.java:200)
    	at com.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:443)
    	... 22 more
    Caused by: javax.ejb.CreateException: Could not create stateless EJB
    	at com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:528)
    	at com.sun.ejb.containers.StatelessSessionContainer.access$000(StatelessSessionContainer.java:90)
    	at com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory.create(StatelessSessionContainer.java:718)
    	... 24 more
    Caused by: java.lang.NoClassDefFoundError: org/hibernate/criterion/Criterion
    	at service.EJBServiceStock.<init>(EJBServiceStock.java:24)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    	at java.lang.Class.newInstance0(Class.java:355)
    	at java.lang.Class.newInstance(Class.java:308)
    	at com.sun.ejb.containers.BaseContainer._constructEJBInstance(BaseContainer.java:1640)
    	at com.sun.ejb.containers.BaseContainer.createEjbInstanceAndContext(BaseContainer.java:1623)
    	at com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:469)
    	... 26 more
    Caused by: java.lang.ClassNotFoundException: org.hibernate.criterion.Criterion
    	at com.sun.enterprise.loader.ASURLClassLoader.findClassData(ASURLClassLoader.java:736)
    	at com.sun.enterprise.loader.ASURLClassLoader.findClass(ASURLClassLoader.java:626)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    	... 36 more
    |#]
    sachant que le deploiment passe bien.

    des idées SVP suis bloquée

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    ok c'est bon j trouvé la solution

  4. #4
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    et c´etait quoi comme probleme et quelle a été la solution.

    Merci

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

Discussions similaires

  1. Intégrer un projet EJB3 avec un projet web jsf
    Par adnane1984 dans le forum JSF
    Réponses: 7
    Dernier message: 30/04/2008, 11h01
  2. Quels types de projets réalisez vous avec .NET
    Par Louis-Guillaume Morand dans le forum Général Dotnet
    Réponses: 106
    Dernier message: 03/12/2007, 18h44
  3. Probleme de sessions avec un hébergeur
    Par totoranky dans le forum Langage
    Réponses: 3
    Dernier message: 20/10/2005, 02h36
  4. Démarrer automatiquement une session avec pass
    Par cyberman.inc dans le forum Windows XP
    Réponses: 3
    Dernier message: 07/08/2005, 17h55
  5. Création d'une variable de session avec un ID
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 18/10/2004, 10h28

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