2017-10-13 74 views
0

我有一個GWT應用程序,通過集成Jetty的SuperDevMode在本地計算機上運行。該應用程序工作正常,但我需要連接到Oracle數據庫。 我做了以下操作:將GWT應用程序連接到Oracle DB帶來'無效的用戶名/密碼;登錄被拒絕' - 登錄與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); 
    } 
    } 

我嘗試創建連接;我有一個幫助器類「ConfigHelper」,它讀取一個包含所有信息的配置文件。 當我在DebugMode中啓動應用程序時,我可以看到我從配置文件中獲得了正確的值。 但是我得到這個堆棧跟蹤:

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 

奇怪的是,如果我使用QuantumDB Eclipse插件與來自我的配置相同的數據連接到同一個Oracle數據庫文件,它的工作原理。

有什麼我錯過了創建連接? 我apreciate任何幫助提前

編輯 感謝: 使用ojdbc6 11.2.0.3 GWT 2.8.0

回答

0

你必須在數據庫中默認的區分大小寫的用戶名和密碼。 許多應用程序都會自動將用戶名和密碼轉換爲大寫。 有必要的情況下敏感 正確地鍵入用戶名和密碼或更改的Oracle

的認證

SEC_CASE_SENSITIVE_LOGON =假的參數。

測試參數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 

變化參數SEC_CASE_SENSITIVE_LOGON =假。(你需要正確的DBA)

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

好像沒有錯誤無論如何,只有一個小問題,形成我的身邊: 在我的配置文件中爲DB的密碼是正確的,但它包含了一個「\ ' - 我需要用'\'來解決這個問題

相關問題