Я работаю над сложным сценарием корпоративной интеграции с использованием устаревшей версии IEX TotalView (3.12.6.0.8). Драйвер ODBC работает только на 32-битных архитектурах — хорошо, я все равно использую Java. Но драйвер JDBC на основе Simba RPC совместим только с JDBC 1.0 и имеет множество ограничений, которые я не полностью задокументировал (один из недостатков заключается в том, что он, по-видимому, не поддерживает подготовленные операторы, по крайней мере, не очень хорошо).
Я пытаюсь использовать Spring Batch и Apache Camel для создания моста для извлечения данных WFM из IEX, но я натыкаюсь на множество ухабов на дороге. Например, JdbcCursorItemReader завершается ошибкой. под:
preparedStatement = con.prepareStatement(
sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
с java.sql.SQLException: Driver Not Capable
. Я справился с более простыми сценариями ETL, используя JdbcTemplate
с ссылкой RowMapper
, но эта комбинация позволяет мне либо самому управлять извлечением (препятствуя цели Spring Batch), либо загружать весь набор результатов в список (препятствуя цели пейджинга/потоковой передачи).
Прямо сейчас я пытаюсь использовать JdbcPagingItemReader
путем расширения AbstractSqlPagingQueryProvider
для реализации собственной стратегии пейджинга на основе запросов, но это оказалось более сложно, чем предполагалось.
Я новичок в Spring Batch, поэтому могу что-то упустить. Есть ли у кого-нибудь еще какие-либо стратегии использования Spring со старыми/несовершенными/дефектными драйверами JDBC?