Подтвердить что ты не робот

Driver.getConnection зависает с использованием драйвера SQLServer и Java 1.6.0_29

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

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

Полная окружающая среда:

  • ОС: проверено как на redhat 6.1, так и на Windows 2008

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

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

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

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

С уважением,

Руи

4b9b3361

Ответ 1

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

Я использую как 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: все было хорошо снова!

С наилучшими пожеланиями Erich

Ответ 2

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

  • SQL-драйвер 2.0
  • SQL-драйвер 3.0
  • SQL-драйвер 4.0 CTP 3
  • jTDS SQL Driver 1.2.5

  • SQL server 2008R2

  • Java 1.6.0_29

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

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

Добавлен в База данных ошибок Java и работает над Oracle.

Перекрестная ссылка на Microsoft Access Data Forum Forum (принятый ответ: обновление до java 7) и Форумы Oracle Java JDBC (информация, добавленная здесь, также добавляется в базу данных ошибок Java).

Ответ 3

См. решение здесь 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 в этом случае.

Ответ 5

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

Ответ 6

Я так счастлив, что нашел этот форум. У меня была такая же проблема при обновлении (я фактически обновился с 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-версии).

Ответ 7

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

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

Ответ 8

Модернизация до 1.6.0_30 также работала для меня. Microsoft выпустила выражение, в котором сообщается об исправлении в Q1 2012 года. Это похоже на уязвимость Java (BEAST).

Ответ 9

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

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

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

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