zVlad wrote:WildVlad wrote:...............
Идилия продолжалась до того момента пока не посмотрели что на z/OS IBM поставляет СОВЕРШЕННО другую версию java-кода для дров (как не вспомнить про "написано один раз - не работает ни где"
). Спрашивается чего им не хватило виндовской версии дров? Более того, запустить виндовские дрова на z/OS не получилось - чего то типа не хватило (есть смутное подозрение на EBCDIC, но это может быть и не так).
.......
Вот этот вот Ваш абзац не дает мне покоя сегодня весь день. Вы уверены тезка, что драйвер выполняется через виртуальную машину Javа? А как же с производительностью? Если же, как я понимаю, драйвера пишутся для каждого процессора свои (и должны писаться свои), и выполняются они не в виртуальной машине, то естественно виндовский драйвер работать на МФ не будет. И для AS/400 И для RS/6000 и для НP Вам будет нужен свой драйвер.
Однако, как я помню, из нашего давнего proof of concept, можно доставать МФ как через драйвер лежащий на самой МФ так и через драйвер лежащий на шлюзе, который может быть чем угодно.
Пожалуйста укажите что не так в моих рассуждениях, я к сожалению не имею базы для проверки их.
zVlad, мы с вами не совсем тёзки
- это просто у меня ник такой. Ну да ладно, по существу вопроса:
Для Java существуют несколько типов JDBC-драйверов. Вот как говорится первоисточник классификация дров:
http://java.sun.com/products/jdbc/driverdesc.html
Если прочитать, что есть Type 4, то получается, что это дрова
полностью писанные на Java и использующие родной протокол базы (для Db2 v8 этим протоколом является DRDA - он конечно не совсем родной, но всё же).
Далее, JDBC Url в случае DB2v8 JDBC-драйвера выглядит вот так: jdbc:db2://host:port/DBName ну и по-идее ничего на клиенте настраивать не надо. Частный случай - host == localhost и все счастливы
Зная, что дрова писаны на ПОЛНОСТЬЮ на Java, разумно было бы предположить, что они
одинаковые на всех платформах. Однако это не есть так в z/OS-случае - дрова лежат другие (правда совместимые по вызову - то бишь вместо com.db2.jcc.DB2Driver лежит класс-заглушка расширяющая какой-то "настоящий" класс). При этом скопировать "виндовские" jar'ы на USS z/OS и получить через них коннекцию не получилось. После чего мы прочитали очередные "описания будущего в прошедшем времени", поставили какой-то update DB2 на z/OS, откопали их дрова, я скачал их на винду, распаковал в каталог и сравнил с виндовскими (сначала убедился, что даже структура каталогов разная), потом убедился WinDiff'ом, что даже файлы с совпадающими именами разные, ну а потом засунул в Eclipse и по-reverse engineer'ил их чуток - те и другие.
Зная всё это какие напрашиваются выводы? Что type 4 - не совсем Type 4 и что-то использует native? Но с другой стороны, если скопировать v8 windows драйвер на другую винду то всё работает...
Так я и не понял, чего они так намутили... Такое предположение, что у них "Type4" драйвер использует какие-то классы от Type 2 драйвера, а вот они-то и разные на z/OS и Windows (даже имя класса драйвера разное).
Но результат на лицо (или на лице?) бинарную кроссплатформенную совместимость "Type4" драйвер не обеспечивает...