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

Weblogic Java Discussion :

[EJB][WEBLOGIC][JBuilder]Modifier ma connection au pool


Sujet :

Weblogic Java

  1. #1
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut [EJB][WEBLOGIC][JBuilder]Modifier ma connection au pool
    Bonjour à tous et à toutes, voici mon problème:
    Pour le moment je spécifie mes paramètres de connection(URL,User,Pass) dans mon code et je voudrais ne plus utiliser cela comme dans le code ici
    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
     
        sQuery = "select PROFILE_ID from USERS where LOGIN = '" + login + "' ";
     
        Statement sStat = null;
        Connection cCon = null;
        ResultSet myRs;
        try{
          Class cDriverOracle=Class.forName("oracle.jdbc.driver.OracleDriver");
          Driver dDriverOracle=(java.sql.Driver)cDriverOracle.newInstance();
          DriverManager.registerDriver(dDriverOracle);
          String URL="jdbc:oracle:thin:@ldieu2:1521:security";
          String User="LDIEU";
          String Passd="leroylaure";
          cCon=DriverManager.getConnection(URL,User,Passd);
        }
        catch(Exception e){
          e.printStackTrace();
        }
        try{
           sStat=cCon.createStatement();
           myRs=sStat.executeQuery(sQuery);
           while (myRs.next() ){
             id = myRs.getString("PROFILE_ID");
           }
    Mais je voudrais faire appel à mon pool de connection que j'ai crée sous WebLogic, qui lui contient déjà toutes les informations comme l'URL,User et Passd. Ce pool de connection s'appel DataSource.

    Sous JBuilder 2005 j'ai importer le shéma de ma base de donnée, j'y ai spécifier les différents paramètre de connection(passd,user,url), le driver, et comme nom de JNDI j'ai laissé "DataSource", soit le nom donné par défaut par JBuilder. Il s'y connecte avec succès, et apparait alors une nouvelle DataSources dans mon Module EJB, avec un tree qui affiche mes différentes tables.
    Mais je ne sais pas comment l'appeler dans le code de mon EJB !

    Merci de votre aide à tous.

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Salut,

    Tu peux faire le connection via la dataSource comme exipliqué dans la FAQ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //récupération d'une DataSource, via JNDI d'habitude
    Context ctx = new InitialContext();
    DataSource source = (DataSource)ctx.lookup("jdbc/MaDataSource");
     
    //récupération d'une connexion du pool
    Connection connection = source.getConnection("user", "password");
    //utilisation de la Connection
    // ...
    //on "retourne" la connexion au pool, en la "fermant"
    connection.close();

  3. #3
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    Merci a toi pour ton aide.

    Voilà ce que j'ai fait de mon coté avec tes idées :
    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
     
          Context ctx = null;
            Hashtable ht = new Hashtable();
            ht.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
            ht.put(Context.PROVIDER_URL,"t3://LDIEU2:7001");
            Statement sStat = null;
            Connection cCon = null;
            ResultSet myRs;
        try{
           ctx = new InitialContext(ht);
           javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup ("jdbc/MyJDBC Data Source");
           cCon = ds.getConnection();
           sStat=cCon.createStatement();
           myRs=sStat.executeQuery(sQuery);
           while (myRs.next() ){
     
           ...
     
            //Close JDBC objects
            sStat.close();
              sStat = null;
            cCon.close();
              cCon = null;
            ctx.close();
              ctx = null;
          }
    Mais malheuresement sa ne fonctionne pas
    Voici le message d'erreur qu'il me renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java.rmi.RemoteException: EJB Exception:; nested exception is: 
    	java.rmi.RemoteException: The request did not succeedjavax.naming.NameNotFoundException: While trying to lookup 'jdbc.MyJDBC Data Source' didn't find subcontext 'jdbc' Resolved ; remaining name 'jdbc/MyJDBC Data Source'
    Pourtant "MyJDBC Data Source" est bien le nom de ma datasource sous weblogic, et cette data source fait bien référence a mon pool de connection contenant les infos utiles à la connection !

    Merci d'avance à tous pour votre aide.

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Il faut donner juste le nom de la dataSource que ta définit avec weblogic!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataSource source = (DataSource)ctx.lookup("NomDataSource");

  5. #5
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    J'ai mis ce que tu m'as dis Sniper37, mais sa ne fonctionne pas.
    Il me retourne toujours la même erreur.
    Est ce que je ne dois pas aussi modifier mes fichiers .xml??

    Merci a toi

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Du coté de ton webLogic tout est bien configuré? la dataSource + ConnectionPool ?

  7. #7
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    Alors du coté de WebLogic, j'ai un pool de connection nommé DataSource avec les différents paramètres de connection à ma DB Oracle, quand je clic sur l'onglet testing, et que je fait un testPool sur myserver, il me dit "Connection successful on: myserver", donc tout va bien !

    Pour la DataSource en tant que tel, voici ce que j'ai configuré :
    Name : MyJDBC Data Source
    JNDI name : cecuPool
    ( car si je mets CECUSes comme dans mon .xml sa ne fct pas ! )
    Pool name : DataSource.
    Et dans Target and deploy j'ai bien coché myserver.
    Mais là aucun test n'est possible.

    Donc voilà, je ne sais pas d'ou vient mon problème !
    Merci a toi.

  8. #8
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Dommage, je n'ai plus weblogic sous la main! Si ta dataSource est liée à le connection pool, le connection pool lié à l'application web, normalement ça devrait marché.
    L'erreur concerne le nom jndi de ta dataSource, vérifie si c'est le même que dans weblogic.
    Tu parle d'un fichier xml.. lequel?

  9. #9
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    Je parle du fichier weblogic-ejb-jar.xml. c'est là qu'il est spécifier le nom de JNDI CECUSes comme mis ci dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      <weblogic-enterprise-bean>
        <ejb-name>CECUSes</ejb-na
        <enable-call-by-reference
        <jndi-name>CECUSes</jndi-
      </weblogic-enterprise-bean>
    Et donc comme dit plus haut, je ne peux pas mettre ce meme nom de JNDI pour ma DataSource, c'est pour celà que j'en ai choisi un autre nommé cecuPool, mais je ne sais pas si je peux faire sa !
    mais en tout cas dans le 2èmer cas il ne m'affiche plus d'erreur lors du déploiment.

    Bien à toi,

  10. #10
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    ahh ok,

    ma compétences en EJB est limité, j'ai utilisé le connection pool de Weblogic sans utilisant les EJB. Moi je te parlais du nom de la dataSource définit dans weblogic.
    désolé faut attendre la réponse d'un initié !

  11. #11
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    Pas grave un tout grand merci a toi

    Et si un super hero passe par là, il est le bien venu

  12. #12
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    Bonjour à tous et à toutes, voilà j'ai cherché et voici le code qui fonctionne pour ce problème :
    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
     
    ...
        Context ctx = null;
     
          Connection conn = null;
          Statement stmt = null;
          ResultSet myRs = null;
     
          try {
            ctx = new InitialContext();
            DataSource ds = (DataSource) ctx.lookup ("cecuPool");
            conn = ds.getConnection();
     
           // The conn is an object to create Statements and retrieve result sets: 
     
            stmt = conn.createStatement();
            myRs = stmt.executeQuery(sQuery);
            while (myRs.next() ){
              ...
           }
            //Now we close JDBC objects
            stmt.close();
            stmt = null;
     
            conn.close();
            conn = null;
     
            ctx.close();
            ctx = null;
         }
          catch (Exception e) {
            throw new RemoteException(
                "A failure occured during the connection to WebLogic, whith JNDI name cecuPool." + e.toString());
          }
    ...
    Voilà le problème était donc que j'appelai dans "ctx.lookup" le nom de la DataSource crée sous WebLogic, et en gros il fallait que j'appel le nom de JNDI que je lui avait spécifié, soit dans mon cas "ctx.lookup ("cecuPool");".

    Voilà, je me permet de donné la solution à mon problème, peut etre sera t'il utile pour quelqu'un !

    Merci a tous ceux qui ont pris la peinne de lire mon post et de chercher, et un tout grand merci àSniper37, pour sont aide précieuse.

    Ciao

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 07/09/2007, 10h28
  2. connection via pool de connection
    Par hadler dans le forum DB2
    Réponses: 1
    Dernier message: 02/09/2007, 14h44
  3. Réponses: 1
    Dernier message: 18/07/2007, 17h18
  4. [VB.Net 2.0/Access] Comment modifier la connection à une DB ?
    Par Vonotar dans le forum Accès aux données
    Réponses: 4
    Dernier message: 06/07/2006, 08h58
  5. Réponses: 4
    Dernier message: 18/05/2006, 09h05

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