Не удается подключиться к внешней базе данных Oracle из пула Glassfi sh, но я могу это сделать из DBeaver - PullRequest
0 голосов
/ 24 марта 2020

Во-первых, извините, если я скажу что-то не так, Engli sh не мой родной язык. Кроме того, я меняю настоящие имена по соображениям безопасности (и NDA)

Всякий раз, когда я пытаюсь подключиться из моего проекта Java с Glassfi sh к внешней базе данных с URL-адресом "jdb c : oracle: thin: @ // HOST: 1521 / SID ", DBUSER = пользователь, DBPASSWORD = apass123, выбрасывает

ORA-01017: invalid username/password; logon denied

Вот как я настроил пул Glassfi sh:

Источник данных и драйвер

URL, DBUSER и DBPASSWORD

Домен Glassfi sh. xml

<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>

Мой проект подключается. java, выдает ошибку в dataSource.getConnection()

import javax.sql.DataSource;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public static void Connect(String query) throws NamingException {
        InitialContext ctx = new InitialContext();
        DataSource dataSource = (DataSource) ctx.lookup("jdbc/jndiORA");
        try (Connection conn = dataSource.getConnection()) {
            try (Statement stmt = conn.createStatement()) {
                ResultSet rs = stmt.executeQuery(query);
            }
        }
}

Но когда я пытаюсь соединиться с DBeaver, используя те же учетные данные, он работает!

DBeaver Oracle Настройки соединения

Соединение DBeaver, показывает схемы и может выполнять запросы

Пробовал некоторые ответы, представленные в похожих темах , без положительных результатов

  • Использование "auser" и "apass123" вместо auser и apass123
  • Экранирование первого символа с \ (\ auser and \ apass)
  • Загруженная последняя версия ojdbc6.jar

Я не являюсь администратором внешней базы данных, поэтому не могу попробовать "изменить системный набор" Решение sec_case_sensitive_logon "

Большое спасибо за все!

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

проверьте URL вашего соединения (Пример: jdbc:oracle:thin:@myhost: 1521 / myorcldbservicename). Всегда используйте servicename вместо SID. Также проверьте, работает ли ваше соединение, используя простую Java программу DataSourceSample. java. Это устранит любые проблемы, связанные с базой данных.

0 голосов
/ 24 марта 2020

Свойства должны быть user и password, а не dbuser и dbpassword

<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-адрес службы.

...