Spring Batch с очень старым драйвером JDBC 1.0

Я работаю над сложным сценарием корпоративной интеграции с использованием устаревшей версии 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?


person RubyTuesdayDONO    schedule 09.02.2012    source источник


Ответы (1)


А пока я решил вырастить свой собственный ItemReader< /a>, который просто запрашивает свой DataSource через JDBC API. Не так элегантно, но ничто не может (или не должно) быть бесконечно обратно совместимым. Пока я не забываю хорошо убираться, все должно работать нормально.

person RubyTuesdayDONO    schedule 10.02.2012