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

Glassfish et Payara Java Discussion :

toplink et glassfish v2


Sujet :

Glassfish et Payara Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Points : 14
    Points
    14
    Par défaut toplink et glassfish v2
    je suis entrain de developper une application jee (ejb3)sous netbeans 6.5 en utilisant glassfish v2 comme serveur d'application et toplink comme provider et mysql comme sgbd.
    quand j'execute la classe VolFacade responsable de la persistence de l'entity bean Vol l'erreur suivante apparait:

    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
    javax.persistence.PersistenceException: Exception [TOPLINK-7060] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.ValidationException
    Exception Description: Cannot acquire data source [voldb].
    Internal Exception: 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 oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:239)
            at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:93)
            at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:126)
            at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:120)
            at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:91)
            at ejb.VolFacade.getEntityManager(VolFacade.java:35)
            at ejb.VolFacade.create(VolFacade.java:47)
            at ejb.VolFacade.main(VolFacade.java:62)
    Caused by: Exception [TOPLINK-7060] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.ValidationException
    Exception Description: Cannot acquire data source [voldb].
    Internal Exception: 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 oracle.toplink.essentials.exceptions.ValidationException.cannotAcquireDataSource(ValidationException.java:373)
            at oracle.toplink.essentials.jndi.JNDIConnector.connect(JNDIConnector.java:135)
            at oracle.toplink.essentials.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:184)
            at oracle.toplink.essentials.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:582)
            at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:280)
            at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:229)
            ... 7 more
    Caused by: 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(NamingManager.java:645)
            at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
            at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:385)
            at javax.naming.InitialContext.lookup(InitialContext.java:396)
            at oracle.toplink.essentials.jndi.JNDIConnector.connect(JNDIConnector.java:129)
            ... 11 more
    voici le code de la classe VolFacade:
    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
     
    package ejb;
     
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.annotation.Resource;
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.Persistence;
    import javax.persistence.PersistenceUnit;
    import javax.transaction.UserTransaction;
     
    /**
     *
     * @author Administrateur
     */
    @Stateless
    public class VolFacade implements VolFacadeLocal {
     
    @Resource
    private UserTransaction utx = null;
    @PersistenceUnit(unitName = "OACA-ejbPU")
    private EntityManagerFactory emf = null;
     
    private static final String JPA_UNIT_NAME = "OACA-ejbPU";
    private EntityManager entityManager=null;
    long n=0;
    public EntityManager getEntityManager() {
    if (entityManager == null) {
    entityManager = Persistence.createEntityManagerFactory(JPA_UNIT_NAME).createEntityManager();
    }
    return entityManager;
    }
     
    public void create(long n) throws Exception {
     
    try {
        Vol voll = new Vol(n);
    voll.setDepart("dddddd");
    voll.setDestination("fgfdd");
     
    entityManager = getEntityManager();
     
    entityManager.persist(voll);
     
    utx.commit();
    } finally {
    if (entityManager != null) {
    entityManager.close();
    }
    }
    }
    public static void main(String[] args){
    try {
     
    VolFacade vf = new VolFacade();
    vf.create(5);
    } catch (Exception ex) {
    Logger.getLogger(VolFacade.class.getName()).log(Level.SEVERE, null, ex);
    }
    }
    }
    et le fichier persistence.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?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="OACA-ejbPU" transaction-type="JTA">
        <provider>oracle.toplink.essentials.PersistenceProvider</provider>
        <jta-data-source>voldb</jta-data-source>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
          <property name="toplink.ddl-generation" value="create-tables"/>
        </properties>
      </persistence-unit>
    </persistence>
    est ce que je dois ajouter une datasource a glassfish si oui comment le faire??
    sinon qu'est ce que je dois faire !!
    je suis coincé il ya 3 jours et je ne trouve pas de solution
    merci d'avance pour l'aide

  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
    Comme tu as une méthode main, j'en déduit que tu exécute VolFacade en dehors de glassfish. Pour cela il faut que tu ajoute les jars nécéssaire a l'utilisation des EJB or de glassfish, voir cette FAQ https://glassfish.dev.java.net/javae...aloneRemoteEJB.

    Si il te dis
    Internal Exception: 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
    C'est parceque tu ne dois pas avoir les jars nécessaires dans le classpath de ton client.


    Ensuite, oui tu vas devoir créer une datasource dans glassfish.
    http://www.jtips.info/index.php?titl...ish/Datasource




    J'espère que ça t'a aidé.
    @+

Discussions similaires

  1. Réponses: 48
    Dernier message: 05/04/2014, 22h53
  2. différence glassfish et sun AS
    Par david06600 dans le forum Glassfish et Payara
    Réponses: 3
    Dernier message: 21/02/2007, 09h06
  3. jar du client web pour glassfish ?
    Par Tail dans le forum Glassfish et Payara
    Réponses: 1
    Dernier message: 20/02/2007, 22h28
  4. peut on utiliser toplink essential dans jboss?
    Par mbouzouita dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 25/01/2007, 07h37
  5. Réponses: 2
    Dernier message: 01/05/2006, 19h15

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