无法从Glassfish池连接到外部Oracle数据库,但可以从DBeaver连接到外部Oracle数据库

时间:2020-03-24 18:35:40

标签: oracle jdbc glassfish dbeaver

首先,对不起,如果我说错了,英语不是我的母语。另外,出于安全(和NDA)的原因,我正在更改真实姓名

每当我尝试使用URL将URL从“ Glassfish”的Java项目连接到外部数据库“ jdbc:oracle:thin:@ // HOST:1521 / SID”,DBUSER = auser,DBPASSWORD = apass123时,都会抛出

#include <iostream>
#include <string>

int main(){
    int total = 95;
    std::cout << "Grade is : " << total2Grade(total) << std::endl;
}
std::string total2Grade(int total){ 
     std::string Grade;
     if (total >= 90){
         Grade = 'A';
     }else if (total > 80 && total <= 89){
         Grade = 'B';
     }else if (total > 70 && total <= 79){
         Grade = 'C';
     }else if (total > 60 && total <= 69){
         Grade = 'D';
     }else{
         Grade = 'E';
     }
     return Grade;
}

这是我配置Glassfish池的方式:

DataSource and Driver

URL, DBUSER and DBPASSWORD

Glassfish的domain.xml

ORA-01017: invalid username/password; logon denied

我的项目的connect.java,在<jdbc-connection-pool datasource-classname="oracle.jdbc.pool.OracleDataSource" name="NamePool" res-type="javax.sql.DataSource"> <property name="URL" value="jdbc:oracle:thin:@//HOST:1521/SID"></property> <property name="DBPASSWORD" value="apass123"></property> <property name="DBUSER" value="auser"></property> </jdbc-connection-pool> <jdbc-resource pool-name="NamePool" jndi-name="jdbc/jndiORA"></jdbc-resource> 处抛出错误

dataSource.getConnection()

但是当我尝试使用相同的凭据连接DBeaver时,它确实起作用!

DBeaver Oracle Connection Settings

DBeaver connection, shows the schemas and can do queries

尝试了类似主题中提供的一些答案,但没有正面结果

  • 使用“ auser”和“ apass123”代替auser和apass123
  • 使用\(\ auser和\ apass)转义第一个字符
  • 下载了ojdbc6.jar的最新版本

我不是外部数据库的管理员,因此无法尝试“更改系统设置sec_case_sensitive_logon”解决方案

非常感谢您所做的一切!

2 个答案:

答案 0 :(得分:0)

属性应为userpassword,而不是dbuserdbpassword

<jdbc-connection-pool datasource-classname="oracle.jdbc.pool.OracleDataSource" name="NamePool" res-type="javax.sql.DataSource">
      <property name="URL" value="jdbc:oracle:thin:@//HOST:1521/SID"></property>
      <property name="USER" value="auser"></property>
      <property name="PASSWORD" value="apass123"></property>
</jdbc-connection-pool>

另外/SID实际上是/service-name,因此请检查是否正确,并且您正在尝试使用正确的CDB / PDB-尽管来自DBeaver的屏幕截图有点令人困惑,因为这似乎是在指定连接面板中的SID,但在第二个图像中显示服务名称URL。

答案 1 :(得分:0)

检查您的连接URL(例如:jdbc:oracle:thin:@myhost:1521 / myorcldbservicename)。始终使用服务名代替SID。另外,使用纯Java程序DataSourceSample.java验证连接是否正常。这将消除任何与数据库相关的问题。