[EJB]Problème de connexion JDBC

Problème de connexion JDBC [EJB] - Java - Programmation

Marsh Posté le 08-04-2005 à 12:03:50    

Bonjour à tous, voilà ce que j'essaye de faire mais sans succès.
Je voudrais remplacer ce code si( qui fonctionne très bien!)

Code :
  1. public boolean check()throws java.rmi.RemoteException{
  2.     Vector v = new Vector();
  3.     String sQuery = "";
  4.     String Acces = "";
  5.     String acc = "";
  6.     boolean check = false;
  7.     sQuery= "select * from USERS";
  8.     Statement sStat = null;
  9.     Connection cCon = null;
  10.     ResultSet myRs;
  11.     try{
  12.       Class cDriverOracle=Class.forName("oracle.jdbc.driver.OracleDriver" );
  13.       Driver dDriverOracle=(java.sql.Driver)cDriverOracle.newInstance();
  14.       DriverManager.registerDriver(dDriverOracle);
  15.       String URL="jdbc:oracle:thin:@ldieu2:1521:security";
  16.       String User="LDIEU";
  17.       String Passd="*********";
  18.       cCon=DriverManager.getConnection(URL,User,Passd);
  19.     }
  20.     catch(Exception e){
  21.       System.out.println("--Problème de chargement du driver Oracle" );
  22.       e.printStackTrace();
  23.     }
  24.     try{
  25.        sStat=cCon.createStatement();
  26.        myRs=sStat.executeQuery(sQuery);
  27.        while (myRs.next() ){
  28.          Acces = myRs.getString("LOGIN" );
  29.          System.out.println(Acces);
  30.          acc = "true";
  31.        }
  32.        /**if (acc.equals("" )){
  33.          while (myRs.next() ){
  34.            check = false;
  35.          }
  36.        }*/
  37.        if (acc.equals("true" )){
  38.            check = true;
  39.        }
  40.       sStat.close();
  41.       }
  42.       catch(Exception sqlE){
  43.            System.out.println("La requête n'à pas obouti" );
  44.            sqlE.printStackTrace();
  45.            }
  46.     return check;
  47.   }


 
Par ce code ci, car je voudrais enlever tous les éléments de connexion, afin de rendre mon code plus portable, en cas de changment de username,...

Code :
  1. public boolean check()throws java.rmi.RemoteException{
  2.     try {
  3.           javax.naming.Context context = new javax.naming.InitialContext();
  4.           try {
  5.               dataSource = (DataSource) context.lookup("java:comp/env/jdbc/DataSource" );
  6.           }
  7.           catch(Exception e) {
  8.                throw new EJBException("Error looking up dataSource: " + e.toString());
  9.           }
  10.     }
  11.     catch(Exception e) {
  12.           throw new EJBException("Error initializing context:" + e.toString());
  13.     }
  14.     String sQuery = "";
  15.     String Acces = "";
  16.     String acc = "";
  17.     boolean check = false;
  18.     sQuery= "select LOGIN from USERS where FIRST_NAME= Leroy ";
  19.     Connection cCon = null;
  20.     Statement sStat = null;
  21.     ResultSet myRs;
  22.     try {
  23.       cCon= dataSource.getConnection();
  24.       sStat=cCon.createStatement();
  25.       myRs = sStat.executeQuery(sQuery);
  26.       while (myRs.next() ){
  27.         Acces = myRs.getString("LOGIN" );
  28.         System.out.println("Login: "+Acces);
  29.         acc = "true";
  30.       }
  31.       if (acc.equals("true" )){
  32.           check = true;
  33.        }
  34.     sStat.close();
  35.     }
  36.     catch(Exception sqlE){
  37.          System.out.println("La requête n'à pas obouti" );
  38.          sqlE.printStackTrace();
  39.            }
  40.     return check;
  41.   }


Mais sa ne fonctionne pas, j'ai pourtant bien crée mon pool de connection DataSource sous JBuilder, mais sa ne fonctionne pas, il m'affiche des problèmes concernant DataSource !!
Voilà le code de retour que j'ai lorsque je fais un RUN du client test:

Code :
  1. -- Calling check()
  2. java.rmi.RemoteException: EJB Exception: ; nested exception is:
  3. javax.ejb.EJBException: Error initializing context:javax.ejb.EJBException: Error looking up dataSource: javax.naming.NameNotFoundException: While trying to look up comp/env/jdbc/DataSource in /app/ejb/CECUSesMod.jar#CECUSes.; remaining name 'comp/env/jdbc/DataSource'
  4. at weblogic.rjvm.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:108)
  5. at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:290)
  6. at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:247)-- Failed : check()
  7. at cecusesproject.CECUSes_e3q30w_EOImpl_814_WLStub.check(Unknown Source)
  8. at cecusesproject.CECUSesTestClient2.check(CECUSesTestClient2.java:196)
  9. at cecusesproject.CECUSesTestClient2.main(CECUSesTestClient2.java:24)
  10. Caused by: javax.ejb.EJBException: Error initializing context:javax.ejb.EJBException: Error looking up dataSource: javax.naming.NameNotFoundException: While trying to look up comp/env/jdbc/DataSource in /app/ejb/CECUSesMod.jar#CECUSes.; remaining name 'comp/env/jdbc/DataSource'
  11. at cecusesproject.CECUSesBean.check(CECUSesBean.java:65)
  12. at cecusesproject.CECUSes_e3q30w_EOImpl.check(CECUSes_e3q30w_EOImpl.java:45)
  13. at cecusesproject.CECUSes_e3q30w_EOImpl_WLSkel.invoke(Unknown Source)
  14. at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
  15. at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:108)
  16. at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
  17. at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
  18. at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
  19. at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:415)
  20. at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
  21. at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
  22. at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
  23. -- Return value from check(): false.


 
Merci a tous pour votre aide, car je suis perdu ! :hello:


Message édité par Devil6662 le 08-04-2005 à 12:22:24
Reply

Marsh Posté le 08-04-2005 à 12:03:50   

Reply

Marsh Posté le 08-04-2005 à 19:15:45    

Est-ce-que ta datasource de nom "comp/env/jdbc/DataSource" est bien dans un contexte JNDI accessible par ton EJB ?

Reply

Marsh Posté le 11-04-2005 à 10:37:48    

Je t'avoue que je n'en sais absolument rien, je ne m'y connait pas assez je dois dire,
voilà ce dont je dipose comme info, mon nom de GNDI est CECUSes comme donné dans le fichier
weblogic-ejb-jar.xmldont voici le code.

Code :
  1. <weblogic-enterprise-bean>
  2.     <ejb-name>CECUSes</ejb-name>
  3.     <jndi-name>CECUSes</jndi-name>
  4.     <resource-ref>java:comp/env/jdbc/DataSource</resource-ref>
  5.   </weblogic-enterprise-bean>


Pour ce qui est du reste je n'ai rien spécifié !
Merci à toi pour ton aide, ciao  :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed