Pb connexion jdbc avec un user ayant un profil qui limite le nombre de

Pb connexion jdbc avec un user ayant un profil qui limite le nombre de - Java - Programmation

Marsh Posté le 19-12-2008 à 15:34:59    

Bonjour,
Mon problème est le suivant :
J'utilise le jdbc fournit par oracle pour la version java 1.4_02 pour faire une connexion à une base oracle.
 
La connexion se fait par un utilisateur qui a un profil qui limite le nombre d'échec à 3.
Après avoir fait 2 connexions en échec en utilisant jdbc, le compte de l'utilisateur est bloqué.
 
Avez-vous déjà rencontré ce genre de problème, svp?  :pfff:  
 
 
code utilisé :
 
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Enumeration;
import java.util.PropertyResourceBundle;
 
public class testConnexion {
 
 /**
  * @param args
  * @throws ClassNotFoundException  
  * @throws IllegalAccessException  
  * @throws InstantiationException  
  * @throws SQLException  
  * @throws SQLException  
  * @throws ClassNotFoundException  
  * @throws IllegalAccessException  
  * @throws InstantiationException  
  */
 public static void main(String[] args) throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException  {
  // TODO Auto-generated method stub
  DriverManager.registerDriver((Driver)Class.forName("oracle.jdbc.driver.OracleDriver" ).newInstance());
   try {
    methode1();
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   
   try {
    methode2();
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   
   try {
    methode2();
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   
   try {
    methode1();
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    DriverManager.deregisterDriver((Driver)Class.forName("oracle.jdbc.driver.OracleDriver" ).newInstance());
   }
 
 }
 
 
 public static void methode1() throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException {
 
  Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracle-nombase:portbase:instance", "login", "pwd" );
  String strSQL = "SELECT distinct(code) FROM op.devise ";
   
   
  try {
  // - Obtention d'un Statement
   java.sql.PreparedStatement pstmt = con.prepareStatement(strSQL);
   ResultSet rs = pstmt.executeQuery();
 
   while ( rs.next() ){
    System.out.println("code : " + rs.getString(1));
   }
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
 
  }
  finally {
   if(con!=null){
    con.close();
   }
  }
 }
 
 public static void methode2() throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException {
 
  Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracle-nombase:portbase:instance", "login", "MauvaisPwd" );
  String strSQL = "SELECT distinct(code) FROM op.devise ";
   
  try {
   // - Obtention d'un Statement
    java.sql.PreparedStatement pstmt = con.prepareStatement(strSQL);
    ResultSet rs = pstmt.executeQuery();
   
    while ( rs.next() ){
     System.out.println("code : " + rs.getString(1));
    }
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
 
   }
   finally {
    if(con!=null){
     con.close();
    }
   }
 
 }
 
}

 
 
La trace représente l'exécution du code ci-dessus:
 
code : USD
code : XEU
code : ZAR
 
java.sql.SQLException: ORA-01017: invalid username/password; logon denied
 
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:170)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:218)
at oracle.jdbc.ttc7.O3log.receive2nd(O3log.java:517)
at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:266)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:269)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:375)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:266)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at testConnexion.methode2(testConnexion.java:88)
at testConnexion.main(testConnexion.java:36)
java.sql.SQLException: ORA-01017: invalid username/password; logon denied
 
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:170)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:218)
at oracle.jdbc.ttc7.O3log.receive2nd(O3log.java:517)
at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:266)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:269)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:375)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:266)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at testConnexion.methode2(testConnexion.java:88)
at testConnexion.main(testConnexion.java:43)
java.sql.SQLException: ORA-28000: the account is locked
 
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:170)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:218)
at oracle.jdbc.ttc7.O3log.receive2nd(O3log.java:517)
at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:266)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:269)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:375)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:266)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at testConnexion.methode1(testConnexion.java:62)
at testConnexion.main(testConnexion.java:50)
 
 
Constatation :
Le programme fait 4 tentatives de connexion :
 
La première tentative de connexion se déroule bien, des données sont affichées.
 
La deuxième :
invalid username/password;
(Normal, mot de passe incoorect)
 
La troisième :
invalid username/password;
(Normal, mot de passe incoorect)
 
La quatrième :
the account is locked
(problème, le compte est déjà fermé alors que l'on a fait que 2 tentatives avec échecs. Cette quatrième tentative utilise la même méthode que la première tentative)

Reply

Marsh Posté le 19-12-2008 à 15:34:59   

Reply

Sujets relatifs:

Leave a Replay

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