Невозможно привести соединение к oracle.jdbc.OracleConnection

Почему java.sql.Connection нельзя привести к oracle.jdbc.OracleConnection в приведенном ниже коде?

Моя главная цель - передать в Oracle соединение новое имя пользователя и сохранить его вСЕССИЯ» таблица, например,osuser» столбец, потому что я хочу отслеживать в БД пользовательские изменения и отображать их в таблице.

@Repository
public class AuditLogDAOImpl implements AuditLogDAO {

    @PersistenceContext(unitName="myUnitName")
    EntityManager em;

    @Resource(name = "dataSource")
    DataSource dataSource;

    public void init() {

        try {
            Connection connection = DataSourceUtils.getConnection(dataSource);
            OracleConnection oracleConnection = (OracleConnection) connection; //Here I got cast exception!

            String metrics[] = new String[OracleConnection.END_TO_END_STATE_INDEX_MAX];
            metrics[OracleConnection.END_TO_END_CLIENTID_INDEX] = "my_new_username";

            oracleConnection.setEndToEndMetrics(metrics, (short) 0);

            java.util.Properties props = new java.util.Properties();
            props.put("osuser", "newValue");

            oracleConnection.setClientInfo(props);

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

Вот журнал ошибок:

10:42:29,251 INFO  [STDOUT] org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6@bcc8cb
10:42:51,701 ERROR [STDERR] java.lang.ClassCastException: $Proxy286 cannot be cast to oracle.jdbc.OracleConnection

Вообще у меня 2 проблемы в этом случае:

почему происходит сбой приведения из Connection to OracleConnection иКаков наилучший способ реализации моего намерения (я имею в виду установить новое имя пользователя v $ session.osuser в Oracle DB?

Я работаю с Oracle 11g, Hibernate (с помощью диспетчера сущностей), источник данных через jndi.

Пожалуйста, помогите, спасибо!

РЕДАКТИРОВАТЬ:

После некоторого улучшения проблема с кастингом все еще существует.

Улучшение:

Connection connection = DataSourceUtils.getConnection(dataSource);
connection = ((org.jboss.resource.adapter.jdbc.WrappedConnection)connection).getUnderlyingConnection();
OracleConnection oracleConnection = (OracleConnection) connection;

Ошибка:

java.lang.ClassCastException: $Proxy287 cannot be cast to org.jboss.resource.adapter.jdbc.WrappedConnection

Ответы на вопрос(9)

Ваш ответ на вопрос