Ошибка преобразования JDBCConnection в OracleConnection - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть фрагмент кода, который не выполняется при запуске хранимой процедуры в Jboss7.1.0EAP в моем проекте spring-mvc, который подключается к Oracle11g без RAC. Я использовал ojdbc14.jar в автономном JBoss

protected ARRAY registerOracleArray(String typeName, Connection connection,
  Object[] object) throws SQLException {
 System.out.println("Entered here");
 OracleConnection oracleConnection = null;
  if (connection.isWrapperFor(OracleConnection.class)) {
  oracleConnection = connection.unwrap(OracleConnection.class);
  }
 String inTypeName = "TBCAM." + typeName.toUpperCase();
 ArrayDescriptor arrayDescriptor = ArrayDescriptor.createDescriptor(
   inTypeName, oracleConnection);
 return new ARRAY(arrayDescriptor, oracleConnection, object);
}

Ошибка в журналах:

Сообщение об ошибке: - java.util.concurrent.ExecutionException: java.lang.AbstractMethodError:
oracle.jdbc.driver.T4CConnection.isWrapperFor (Ljava / lang / Class;) Z

Ответы [ 2 ]

0 голосов
/ 13 ноября 2019

• Проблема с совместимостью использованного оракула. • Также объект подключения к базе данных, возвращаемый из пула источников данных JBOSS7, имеет тип org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8. Это не ожидаемый объект, и приведение его к объекту соединения Oracle приводит к ошибке.

Примененные решения: • Обновление JAR-файлов до Oracle7 с использованием ojdbc7.jar • Вместо получения соединения с базой данных из пула JBOSS, создано соединениеот JDBC.

0 голосов
/ 06 ноября 2019

Как вы упомянули, вы используете старый драйвер ojdbc14. Получите более свежую версию, например, здесь https://www.oracle.com/database/technologies/jdbc-drivers-12c-downloads.html.

Не раздражайтесь, если 14 в ojdbc14 не новее, чем ojdbc6 или ojdbc7. Число относится к версии Java (поэтому 14 означает 1,4).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...