2017-10-13 20 views
0

J'ai une application GWT fonctionnant localement sur mon ordinateur via SuperDevMode avec Jetty intégrée. L'application fonctionne correctement, mais je dois me connecter à une base de données Oracle. Je ne e ce qui suit:La connexion de l'application GWT à Oracle DB entraîne un nom d'utilisateur/mot de passe invalide; logon denied '- Login fonctionne avec QuantumDB?

public static Connection getConnection() throws ConfigurationException { 
    try { 
     if (conn == null) { 
     createConnection(); 
     } 
     return conn; 
    } catch (SQLException e) { 
     System.out.println(); 
     throw new ConfigurationException(e); 
    } 
    } 

    private static void createConnection() throws ConfigurationException, SQLException { 
    try { 
     String url = ConfigHelper.getJdbcUrl(); 
     String user = ConfigHelper.getJdbcUser(); 
     String password = ConfigHelper.getJdbcPassword(); 
     String schema = ConfigHelper.getJdbcSchema(); 
     String driverName = ConfigHelper.getJdbcDriver(); 
     Driver driver = (Driver) Class.forName(driverName).newInstance(); 

     DriverManager.registerDriver(driver); 
     conn = DriverManager.getConnection(url, user, password); 
     conn.setSchema(schema); 
    } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { 
     throw new ConfigurationException(e); 
    } 
    } 

J'essaie de créer la connexion; J'ai une classe d'aide "ConfigHelper" qui lit un fichier de configuration avec toutes les informations. Lorsque je lance l'application dans DebugMode, je peux voir que je reçois les bonnes valeurs du fichier de configuration. Cependant je reçois ce Stacktrace:

java.sql.SQLException: ORA-01017: invalid username/password; logon denied 

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445) 
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:389) 
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:382) 
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:600) 
at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:445) 
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450) 
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192) 
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:380) 
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:760) 
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:401) 
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:546) 
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:236) 
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) 
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521) 
at java.sql.DriverManager.getConnection(DriverManager.java:664) 
at java.sql.DriverManager.getConnection(DriverManager.java:247) 
at de.axa.schadenreserveOnline.server.db.DBHelper.createConnection(DBHelper.java:51) 
at de.axa.schadenreserveOnline.server.db.DBHelper.getConnection(DBHelper.java:32) 
... 73 more 

La chose étrange est, si j'utilise le QuantumDB Plugin pour Eclipse de se connecter au même Oracle DB avec les mêmes données de mon fichier config cela fonctionne.

Y at-il quelque chose que j'ai manqué de créer la connexion? Je séduisait toute aide Merci à l'avance

Edit: utilisant ojdbc6 11.2.0.3 GWT 2.8.0

Répondre

0

Vous avez un cas par défaut le nom d'utilisateur et mot de passe sensible dans la base de données. De nombreuses applications convertissent automatiquement le nom d'utilisateur et le mot de passe en majuscules. Il est nécessaire de saisir le nom d'utilisateur et mot de passe correctement dans le cas sensible ou modifier le paramètre de l'authentification d'Oracle

SEC_CASE_SENSITIVE_LOGON = false.

paramètre de test sec_case_sensitive_logon = false.

Connected to: 
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production 

SQL> show parameter sec_case 

NAME         TYPE  VALUE 
------------------------------------ ----------- ----------------------------- 
sec_case_sensitive_logon    boolean  TRUE 

modifier le paramètre de SEC_CASE_SENSITIVE_LOGON = false. (dont vous avez besoin dba droite)

SQL> alter system set sec_case_sensitive_logon=false scope=both; 

System altered. 

SQL> show parameter sec_case 

NAME         TYPE  VALUE 
------------------------------------ ----------- ----------------------------- 
sec_case_sensitive_logon    boolean  FALSE 
SQL> 
0

Il semble que il n'y avait pas d'erreur que ce soit, ne forment qu'un petit problème de mon côté: Dans mon Config fichier le mot de passe pour la DB était correcte, mais il contenait un « \ ' - J'avais besoin d'échapper à cela avec' \ '