Я столкнулся с серьезной проблемой, вот факты -
Я регистрирую конкретный возвращаемый параметр и для этого преобразую 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();
Среды LOCAL и 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" />
Тестовая среда отличается тем, что в ней есть источник данных из server.xml, хотя конфигурация точно такая же. Для меня это единственное различие между этими средами.
Что может быть Проблема? Почему я получаю исключение ClassCastException с использованием того же кода, но в разных средах? Использование getCl ass () Я могу сказать, что все они одного типа ... пожалуйста, помогите!