Driver.getConnection使用SQLServer驱动程序和Java 1.6.0_29挂起

时间:2011-10-20 19:49:03

标签: java sql-server sql-server-2008 jdbc

我不知道在哪里写点什么,并决定在这里做。

在调试我的程序后,我发现调用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。

有没有人知道可能导致这种情况的原因是什么?也许有些开发者? :P

致以最诚挚的问候,

9 个答案:

答案 0 :(得分:15)

我遇到了完全相同的行为:

我在Windows 7 64位PC上同时使用Oracle XE和MS SQL Server Express - 我从1.6.0_27(x64版本)升级到java 1.6.0_29,并惊讶地看到能够连接到的相同程序Oracle XE但不是MS SQL Server ...

我将问题追溯到javax.sql.DataSource.getConnection()永远悬挂的地方 - 因为这只是一个界面,jdbc驱动程序引起了我的怀疑......

我正在使用MS SQL Server JDBC驱动程序3.0.1301.202,我甚至更新到SQL Server CTP(“社区技术预览版”)4.0.1722.1,因为我怀疑它必须对jdbc驱动程序做些什么 - 但没有成功:仍然悬挂!

我的解决方法是降级到1.6.0_27并且 - 砰的一声:一切都很好了!

最好的问候 埃里希

答案 1 :(得分:7)

转载:

的组合会出现问题
  • 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 Bug Database并正在由Oracle工作。

Microsoft MSDN Data Access Forum上转发(已接受回答:升级到java 7)和Oracle Java JDBC Forums(此处添加的信息也会添加到Java Bug数据库中)。

答案 2 :(得分:4)

请在此处查看解决方案 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的使用有关,可以通过将jre / lib中的jsse.jar替换为早期版本中的jsse.jar来缓解,例如在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 :(得分:3)

作为一个仅供参考,似乎在1.6系列中有一个新的步骤#30修复了这个问题: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7103725

答案 4 :(得分:1)

我有相同的挂起问题,只有java 1.6.0_29。我注意到如果我升级到7.1,问题就会消失

答案 5 :(得分:1)

我很高兴我找到了这个论坛。我在升级时遇到了同样的问题(我实际上从1.6.0_22升级到1.7.1,然后在问题发生时降级到1.6.0_29。

我注意到的另一件事:如果我使用1.6.0_29 jre,它会失败,但如果我使用1.6.0_29 jdk,它可以工作......我花了大约一天试图找出为什么eclipse(它使用的是当myEclipse(使用jdk)工作时,jre)失败了....

如何将bug引入这样的后期版本? (我正在制作一个java生产版本推荐)。

答案 6 :(得分:1)

这里有同样的问题(SQLJDBC4,MsSQL 2008 R2,JDK1.6.0.29),但在更新到1.6.0.30之后问题就解决了......

因此它应该是1.6.0.29的DriverManager中的一个关键错误

答案 7 :(得分:1)

升级到1.6.0_30也对我有用。微软已于2012年第一季度发布a statement宣布修复。看起来它是一个Java漏洞(BEAST)。

答案 8 :(得分:0)

我有一个完全相同的问题,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 driver broken after update to 1.6.0_29非常相似,但原因不同。有趣的是它出现在MS驱动程序和jtds驱动程序上。