2017-10-13 105 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的密码是正确的,但它包含了一个“\ ' - 我需要用'\'来解决这个问题

相关问题