Я столкнулся с обостряющейся проблемой, вот факты -
Я регистрирую специфический возвращаемый параметр и для этого я преобразую java.sql.PreparedStatement в oracle.jdbc.OraclePreparedStatement.
((OraclePreparedStatement) getStatement())
.registerReturnParameter(index, sqlType);
Это прекрасно работает, когда я запускаю это из Eclipse и даже работает, как и ожидалось, на нашем сервере разработки.Однако, когда я перемещаю его на наш тестовый сервер, где я получаю неожиданную ошибку ...
oracle.jdbc.driver.OraclePreparedStatementWrapper cannot be cast
to oracle.jdbc.OraclePreparedStatement
Это невероятно странная ошибка для меня, потому что я уверен, что OraclePreparedStatement можно назначить из getStatement ().Я отладил и обнаружил, что это ИСТИНА для всех сред:
//class oracle.jdbc.driver.OraclePreparedStatementWrapper
getStatement().getClass();
ЛОКАЛЬНЫЕ и среды DEV используют оба источника данных, которые я настроил в META-INF / context.xml:
<Resource name="dataSource/dbsubm" auth="Container"
type="oracle.jdbc.xa.client.OracleXADataSource"
factory="org.apache.naming.factory.BeanFactory"
user="*****" password="******"
URL="jdbc:oracle:thin:@host:port:db" />
Среда TEST отличается тем, что в ней имеется DataSource из server.xml, хотя конфигурация точно такая же.Для меня это единственная разница между этими средами.
В чем может быть проблема?Почему я получаю ClassCastException, используя тот же код, но в разных средах?Используя getClass (), я могу сказать, что они все одного типа ... пожалуйста, помогите!