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?  
  
 
 
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)