Driver.getConnection зависает с использованием драйвера SQLServer и Java 1.6.0_29 - PullRequest
26 голосов
/ 20 октября 2011

Я не знал, где что-то написать об этом, и решил сделать это здесь.

После долгого времени отладки моей программы я мог обнаружить, что вызов Driver.getConnection (строка, строка, строка) вешает вызывающий поток. Почему (?) Я действительно не знаю, но я мог бы узнать, что это происходит с Java 1.6.0_29, а не с Java 1.6.0_26.

Полная среда:

  • ОС: протестировано на Redhat 6.1 и Windows 2008

  • Драйвер: MS SQL Server JDBC Версия драйвера 3.0.1301.101

  • Версии Java: 1.6.0_26 и 1.6.0_29

Как я уже говорил, работает с 1.6.0_26.

Есть ли кто-нибудь, кто знает, что это может быть причиной? Может быть, какой-то разработчик? : Р

С уважением,

Руи

Ответы [ 9 ]

15 голосов
/ 21 октября 2011

Я столкнулся с точно таким же поведением:

Я использую Oracle XE и MS SQL Server Express на моем 64-битном ПК с Windows 7 - я обновился до java 1.6.0_29 с 1.6.0_27 (версия x64) и был удивлен, увидев, что одни и те же программы могут подключаться к Oracle XE, но не для MS SQL Server ...

Я проследил проблему до javax.sql.DataSource.getConnection(), где она висела навсегда - потому что это всего лишь интерфейс, драйверы jdbc подняли мое подозрение ...

Я использую драйвер JDBC для MS SQL Server 3.0.1301.202, и я даже обновился до SQL Server CTP («предварительный технический обзор сообщества») 4.0.1722.1, поскольку я подозревал, что он должен что-то делать с драйвером jdbc - но безуспешно: все еще висит!

Мой обходной путь - понижение до 1.6.0_27 и - bang: все снова было хорошо!

С наилучшими пожеланиями Эрих

7 голосов
/ 25 октября 2011

Воспроизводится: Проблема возникает с комбинацией

  • Драйвер SQL 2.0
  • Драйвер SQL 3.0
  • Драйвер SQL 4.0 CTP 3
  • Драйвер jTDS SQL 1.2.5

  • SQL-сервер 2008R2

  • Java 1.6.0_29

Измените либо версию сервера SQL (протестировано в 2005 и 2008 годах), либо версию Java (1.6.0_27, 1.7.0_1), и проблема больше не возникает.

Клиент / серверная ОС: Windows 2008R2

Добавлен в Java Bug Database и работает над Oracle.

Взаимное размещение на Microsoft MSDN Data Access Forum (принятый ответ: обновление до Java 7) и Oracle Java JDBC Forums (информация, которая добавлена ​​здесь, также добавляется в Java Bug Database).

4 голосов
/ 28 октября 2011

Смотрите решение здесь https://forums.oracle.com/forums/thread.jspa?messageID=9954398&tstart=0 http://social.msdn.microsoft.com/Forums/en/sqldataaccess/thread/97dce8fd-6487-4bca-80b0-492167db3e0d

"По-видимому, это связано с использованием SSL и может быть смягчено путем замены jsse.jar в jre / lib на тот из более ранней версии, например, из выпуска 1.6.0_27. Я был сбит с толку 1.6.0_29 работает с MS JDBC и более старыми установками SQL Server '05, которые не выполняют безопасных соединений. Все более новые серверы (SQL Server '08 R2) отказывают, поскольку им требуется SSL, а Java 1.6.0_29 не работает с использованием jTDS или MS JDBC в этом случае. "

3 голосов
/ 15 декабря 2011

Как к вашему сведению, в семействе 1.6 появилась новая сборка шага # 30, которая устраняет проблему: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7103725

1 голос
/ 10 февраля 2012

Обновление до 1.6.0_30 у меня тоже сработало. Microsoft выпустила заявление , объявляющее об исправлении в первом квартале 2012 года. Похоже, это уязвимость Java (BEAST).

1 голос
/ 02 января 2012

Та же проблема здесь (SQLJDBC4, MsSQL 2008 R2, JDK1.6.0.29), но после обновления до 1.6.0.30 проблема была решена ...

Так что это должно бытькритическая ошибка в DriverManager 1.6.0.29

1 голос
/ 26 октября 2011

Я так счастлив, что нашел этот форум.У меня была такая же проблема при обновлении (я фактически обновил с 1.6.0_22 до 1.7.1, затем понизил до 1.6.0_29, когда возникла проблема.

Еще одна вещь, которую я заметил: если я использую 1.6.0_29 jre, это не удается, но если я использую 1.6.0_29 jdk, это работает ... Я потратил около суток, пытаясь понять, почему происходит сбой eclipse (который использовал jre), когда myEclipse (который использовал jdk) былработает ....

Как можно представить ошибку в столь позднем выпуске? (Я нахожусь в процессе подготовки рекомендации по рабочей версии Java).

1 голос
/ 21 октября 2011

У меня такая же проблема зависания, и только с java 1.6.0_29. Я заметил, что при обновлении до 7.1 проблема исчезнет

0 голосов
/ 13 марта 2013

У меня была точно такая же проблема, когда jBoss зависал на driver.getConnection (). Однако я использовал jBoss EAP 5.1, java 1.6.0_37x64, Sql Server 2005 и jtds1.2.5 в качестве драйвера jdbc.

Обходной путь, который мне пришлось использовать, - это настройка jvm при запуске: -Djsse.enableCBCProtection = false, и это решило ее.

Я не считаю это исправлением, а скорее обходным решением на данный момент.

Я нашел ошибку: 7105007: драйвер JDBC Microsoft & jTDS сломался после обновления до 1.6.0_29 , который был очень похож, но имел другую причину. Интересно было то, что он появился как на драйверах MS, так и на драйверах jtds.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...