Windows(32bit)、Microsoft SQL Server JDBC Driver 2.0とJava6 Update 29の組み合わせだとコネクション取得時に帰ってこなくなる
環境
- Windows XP SP3(32bit)
- JDK 1.6u29
- SQL Server JDBC Driver 2.0(sqljdbc4-2.0.jar)
現象
コネクション取得時に応答が帰ってこなくなる。
このへんで。
java.net.SocketInputStream.socketRead0(Native Method) java.net.SocketInputStream.read(SocketInputStream.java:129) com.microsoft.sqlserver.jdbc.TDSChannel.read(IOBuffer.java:1525) com.microsoft.sqlserver.jdbc.TDSReader.readPacket(IOBuffer.java:3274) - ロックされた com.microsoft.sqlserver.jdbc.TDSReader@1c118ae com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(IOBuffer.java:4437) com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(IOBuffer.java:4389) com.microsoft.sqlserver.jdbc.SQLServerConnection$1ConnectionCommand.doExecute(SQLServerConnection.java:1457) com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4026) com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1416) - ロックされた java.lang.Object@3b84ee com.microsoft.sqlserver.jdbc.SQLServerConnection.connectionCommand(SQLServerConnection.java:1462) com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:1931) com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41) com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:1917) com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4026) com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1416) - ロックされた java.lang.Object@3b84ee com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1061) com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:833) com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:716) com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:841) java.sql.DriverManager.getConnection(DriverManager.java:582) java.sql.DriverManager.getConnection(DriverManager.java:154)
対策
- 6u24だと問題なく動きますよ
- JDBC Driver 3.0使ったらどうにかなるんじゃないかという気がします(まだ検証してない)
その他
この現象がどのプラットフォームで発生するのかは不明、とりあえず手元のWindowsマシンで発生し、原因を特定するために金曜日の夜を有意義に過ごすことが出来ました。
追記(2011-12-16)
6u30でなおるっぽい
- Bug ID: JDK-7105007 Microsoft & jTDS JDBC driver broken after update to 1.6.0_29
- Bug ID: JDK-7103725 REGRESSION - 6u29 breaks ssl connectivity using TLS_DH_anon_WITH_AES_128_CBC_SHA
Release Fixed 6u30(b12), 5.0u33(b09) (Bug ID:2216276) , 1.4.2_35(b09) (Bug ID:2216277)
State 10-Fix Delivered, bug