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

Tomcat et TomEE Java Discussion :

[Debutant] Bean entité BMP - problème JNDI


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut [Debutant] Bean entité BMP - problème JNDI
    Bonjour!

    Voila j'essaye de comprendre le fonctionnement des beans entités BMP.
    Pour cela j'utilise Netbeans, le serveur d'application de Sun et pointbase comme SGBD.

    J'ai un problème au niveau de ma connexion à la base de données.

    Le problème est qu'il faut que je crée un nom JNDI pour ma connexion à la BD mais je ne vois pas comment faire. A partir de Netbeans? Ou directement avec les outils du server.

    j'ai redéfini la fonction setEntityContext comme ceci :

    La variable "dbname" étant une chaine contenant le nom JNDI pour trouver ma BD sous pointbase se nommant "auto".

    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
     
    public void setEntityContext(javax.ejb.EntityContext context) {
            this.context = context;
     
            try {
                InitialContext ic = new InitialContext();
                // Récupère la datasource auprès du conteneur à l'aide du nom JNDI
                DataSource ds = (DataSource) ic.lookup(dbName);
                // Récupère un objet Connection à partir du DataSource
                connexionBD =  ds.getConnection();
     
            } 
            catch (Exception e) {
                throw new EJBException("Connexion à la base de données impossible : " + e.getMessage());
            }
        }
    Merci de votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 352
    Points : 445
    Points
    445
    Par défaut
    Pourrais-tu donner un peu plus de précisions sur le type d'erreur rencontrée, en fournissant la stack, afin que 'lon puisse avoir une idée si le problème vient de la référence JNDI ou d'ailleur, la valeur de ta variable dbname, ...

    Je ne connais ni ce serveur d'appli ni cet environnement de développement, mais à partir d'EJB 2.0 il faut définir une référence locale sur ton datasource pour ton EJB BMP, et dans l'EJB BMP récupérer ton datasource au moyen d'une référence JNDI locale (celle commençant par java:comp/env/<reférence JNDI locale>).
    Sans plus d'info je pense à un problème autours de cette référence locale à JNDI (avec une exception de type NameNotFound).

    Jacques Desmazières

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 23
    Points : 13
    Points
    13
    Par défaut Meme probleme avec Tomcat
    Bonjour.


    Excusez moi de m'incruster dans ce post mais je pense avoir à peu près le meme probleme.

    Je m'explique : je suis débuatnt en JSP et je cherche à developper un bean pour la connexion à ma base de donnée (DataSource Tomcat pointant vers une base MySQL)

    Voila une partie du code mon bean :

    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
     
       public DataSource ds;
       public ResultSet results;
       public Connection dbconn = null;
       public PreparedStatement sql;
     
       public ConnectDB() {
          try {
        	  InitialContext ctxt = new InitialContext();
          	 ds = (DataSource) ctxt.lookup("java:comp/env/jdbc/MyDS");
          }
          catch (ClassNotFoundException ex) {
             System.err.println("Problème de pilote");
          }
          catch (SQLException ex) {
             System.err.println("Base de données non trouvée ou requête incorrecte");
          }
       }

    Avec en plus une methode bateau pour l'insertion (juste pour un test) :

    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 boolean enregistrer() {
     
    	         miseAJour("INSERT INTO t_pro VALUES 2222,300");
    	         return true;
     
    	   }
     
        public void miseAJour(String requete) {
           try {
           	  sql = dbconn.prepareStatement(requete);
              sql.executeUpdate(requete);      
           } 
           catch (SQLException ex) {
              System.err.println("Requête incorrecte "+requete);
           }
       }

    Déja mon editeur Eclipse me trouve des erreurs au niveau de InitialContext ctxt = new InitialContext(); est ce un bug ? je ne sais pas

    Cette class Java je l'ai donc mise sous WEB-INF\classes.

    Passons maintenant à ma page JSP toute simple elle aussi

    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
     
         <jsp:useBean id="utilisateur" class="ConnectDB">
         <jsp:setProperty name="utilisateur" property="*" />
     
         <h3 align="center">
         <% if (!enregistrer()) { %>
             <font color="red">Echec</font>
         <% 
            }
            else { 
         %>
             <font color="green">OK</font>    
         <% 
           }
         %>
         </h3>
     </jsp:useBean>

    Je n'ai rien rajouter de particulier dans mon web.xml


    Voila l'erreur que Tomcat me sort :

    /bean_test.jsp(3,0) The value for the useBean class attribute ConnectDB is invalid.


    A partir de là j'ai deux questions est-ce que mon DataSource est correctement paramétré au niveau de ma class ? (ce DataSource marche si on le met dans une JSP classique sans bean)

    D'ou peut venir cette erreur ?


    Merci d'avance si qqun à une idée...

    Bonne journée

Discussions similaires

  1. [ManyToMany] problème de bean entité détaché
    Par loopx dans le forum Hibernate
    Réponses: 5
    Dernier message: 17/01/2008, 01h48
  2. Réponses: 3
    Dernier message: 15/05/2007, 17h47
  3. Réponses: 4
    Dernier message: 15/02/2007, 11h06
  4. Count sur une propriété d'un bean entité
    Par dmetzler dans le forum JSF
    Réponses: 11
    Dernier message: 14/02/2007, 22h35
  5. [debutant][bean] test de validité d'un champs
    Par LoLoSS dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 20/05/2004, 13h16

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