28.08.2015

Weblogic: weblogic.jdbc.wrapper.Blob_oracle_sql_BLOB cannot be cast to oracle.sql.BLOB

Ошибка возникает потому, что типы oracle.sql сервер Weblogic обвязывает в свои из weblogic.jdbc.wrapper.
Решение 1 - отключить обвязку на уровне источника данных через консоль, галочку нужно снять:


Решение 2 (и предпочтительное) - выполнить приведение типов в коде.
Код до:
public Connection getServerConnection() {
      System.out.println("DataSource = " + this._ds);
      Connection conn = null;
      try {
  if (this.conn == null){
              conn = this._ds.getConnection();  //меняем эту строку
         }
      } catch (SQLException var4) {
         String msg = "ERROR. Cannot get connection from datasource: " + var4.getMessage();
         System.out.println(msg);
         var4.printStackTrace();
      }
      return conn;
}
Код после:
import oracle.jdbc.OracleConnection;
import weblogic.jdbc.extensions.WLConnection;

public Connection getServerConnection() {
      System.out.println("DataSource = " + this._ds);
      Connection conn = null;
      try {
  if (this.conn == null){
              conn = (((WLConnection) this._ds.getConnection()).getVendorConnection());
         }
      } catch (SQLException var4) {
         String msg = "ERROR. Cannot get connection from datasource: " + var4.getMessage();
         System.out.println(msg);
         var4.printStackTrace();
      }
      return conn;
}
Класс WLConnection можно подключить через com.bea.core.datasource_1.9.0.0.jar

Комментариев нет :