今天出现一个问题,Java中,sqlserver连接不上,以前一直好好的程序,突然就跑不起来了。但是用sqlserver客户端还是可以连接的。说明db没问题。
调查了很久。最后想到jdk的版本,我把jdk改成32位的。就OK了。
原因还是不明。按道理jdbc是不区分32和64的。而且前阵子用64位的jdk,也是可以正常跑起来的。
奇怪了。。。
最后查明原因,不是因为64位和32位的关系,而是jdk版本的原因。jdk的1.6.29这个版本,不管是32位还是64位,连sqlserver2008都有问题。用了换个更新版本的jdk64位就OK了。
使用MyEclipse 1.6JDK + Sqljdbc4.jar 连接sqlserver 2008 R2时,走到
DriverManager.getConnection(connectionUrl);
之后就停在那里了,之后的log打印不出来,也不报任何异常;
于是换了个eclipse试一下,一下就连上了。
原因分析:
换的eclipse使用jdk是1.7,而MyEclipse默认是1.6, 问题找到了,将MyEclipse的编译和运行环境都改为1.7就行了。
如何修改为1.7,可以参考这个网址 http://www.cnblogs.com/brolanda/p/4230636.html
多简单的一个开始啊,居然就给了个下马威;
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7105007
http://stackoverflow.com/questions/7841411/driver-getconnection-hangs-using-sqlserver-driver-and-java-1-6-0-29/
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
http://blogs.msdn.com/b/jdbcteam/archive/2012/01/19/patch-available-for-sql-server-and-java-6-update-30.aspx
http://www.google.com.hk/webhp?hl=zh-CN&sourceid=cnhp#hl=zh-CN&safe=strict&site=webhp&q=enableCBCProtection&oq=enableCBCProtection&gs_l=serp.3...4841.9732.2.10164.2.2.0.0.0.0.238.420.0j1j1.2.0...0.0...1c.1.rJVIv2pMyxI&bav=on.2,or.r_gc.r_pw.&fp=2d6eb67ba785cc25&biw=1280&bih=885
https://confluence.atlassian.com/plugins/viewsource/viewpagesrc.action?pageId=284365810
再tomcat 配置文件里面,catalina.bat 修改这个文件,再90行左右 添加 。
set JAVA_OPTS= -Djsse.enableCBCProtection=false