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