我不知道在哪里写点什么,并决定在这里做。
在调试我的程序后,我发现调用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
致以最诚挚的问候,
瑞
答案 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)
转载:
的组合会出现问题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驱动程序上。