设为首页 收藏本站
查看: 516|回复: 0

[经验分享] Tomcat Sql Server2005 连接池折腾小记

[复制链接]

尚未签到

发表于 2017-2-5 07:18:52 | 显示全部楼层 |阅读模式
最近把一个老项目下载下来,想把系统搭建下来看看原来写的东西,数据库使用的是mssql(对其熟悉不如oracle,正因为如此,才想折腾!),然后把对应的数据库也导出出来了(sql server 2000),导入本机的sql server 2005数据库:现在开源连接池那么多,tomcat已经不怎么使用了,但是我就是想折腾一下。
    一、小报一个错:报备份集中的数据库备份与现有的数据库不同的错误.解决方法:还原时设置:选项 -->还原选项 -->覆盖现有数据库 --> 确定,通过了。
    二、一开始有点sb式的把sql server2000的jdbc驱动包(msbase.jar、msutil.jar、mssqlserver.jar)拷进tomcat/lib下,当然不行:
报错:org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory ([Microsoft][SQLServer 2000 Driver for JDBC]Error
establishing socket.)

    三、删掉mssqlserver.jar,换成个貌似是2005版本的包也叫mssqlserver.jar(从另一个正使用的2005版数据库的系统中找到的),然后修改下tomcat下comtext.xml的Resource配置,报错:org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.microsoft.jdbc.sqlserver.SQLServerDDriver
找不到驱动了?后来才明白应该是driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"中的顺序不对,应该根据jar的目录结构来定。
注意:在SQL SERVER 2005中连接项与SQL SERVER 2000不同:sqlserver与jdbc先后不一样。
    四、一会报这错,一会报那错,我对comtext.xml的Resource配置没信心,对jar引入是否正确没信心,都迟怀疑态度,遇到报错就急着改,急着要搞定,所以两手抓:改Resource配置 + 换jar包,没有严密的解决方法的逻辑性。这次换成了个sqljdbc4.jar包,重启:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (The TCP/IP connection to the host localhost, port 1433
has failed. Error: Connection refused: connect. Please verify the connection properties and check that a SQL Server instance is running on the
host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.)
其实回头想想:这次报错够明显的了,离终点算是最近了,可我还是没引起重视,走绕行了。
    五、朝上面这个错误解决,应该能最明显最快了,可是这个时候同事搞的测试,马上成功的,我觉得他的那个简单获取connection的测试页面---这种方式挺好的,移植到我这来,不行!
我们访问的是不同的数据库(我访问的是本机,他访问的是某服务器),则改成服务器数据库,通过了,可获取链接!shit,我的数据库有问题!
测试页面:

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ page import="javax.naming.Context"%>
<%@ page import="javax.naming.InitialContext"%>
<%@ page import="javax.sql.DataSource"%>
<%@ page import="java.sql.Connection"%>
<%
Context ctx = new InitialContext();
String strLookup = "java:comp/env/test";
DataSource ds = (DataSource) ctx.lookup(strLookup);
Connection con = ds.getConnection();
if (con != null) {
out.print("拿到链接了");
} else {
out.print("失败了");
}
%>

然后小google一下,发现sql server这些版本还需要打补丁,于是sb的去下补丁,然后安装重启机子,依然不可以!
    六、竟然操蛋的发现是 我的mssql 是 express版本,只限制为本地连接,连1433端口服务都没有打开也没有地方可以打开,:s_h_i_t。又去找解决方法;
查看SQL Server Express 2005 网络配置信息(SQL Server 2005 Network Configuration――> Protocols for SQLEXPRESS)。默认的情况下右边列表中的Named Pipes和TCP/IP的状态为Disable,即没有启用。右键点击这两项,在弹出菜单中选中Enable启用这两个协议;在TCP/IP协议上双击鼠标,弹出对话框。修改对话框Protocol属性页中的“Listen All ”项设为“no”。IP Address属性页中,修改你要数据库服务监听的IP地址的属性,修改Enabled属性为Yes,修改TCP Dynamic Ports属性为空,TCP Port项在默认安装下为空,现在修改为我们监听端口1433。
查看连接:netstat -an 或 netstat -p tcp,发现1433终于有了。
    七、重启sqlserver服务一下。测试tomcat连接池,貌似能从tomcat的连接池获取连接成功了。但是还是不能连接上数据库、不能并登入系统。caodan!
报错:传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确,参数 1 (""): 数据类型 0x38 未知。这个时候把mssqlserver.jar 换成 sqljdbc.jar ,修改下参数顺序为:driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
重启,依然不行,TMD,换成sqljdbc4.jar,重启,登陆系统成功。TMD,真够折腾的。
PS:看着好乱吧,凌乱不堪啊,发现自己解决问题过于急于求成,过于急躁,一口气想搞定,但是有些基础知识又不扎实,造成手忙脚乱的喜欢瞎折腾。经过这个经历,发现平时真应该认真整理整理自己的思路,和解决问题的逻辑方法,先后顺序,一步一步来,不能一口吃下一个胖子的,不能为了解决问题而解决,解决完事了也就完事了,这样一来,下次遇到问题,依然会是手忙脚乱急于求成,欲速则不达!
形成各初步解决问题的思路吧:获取基础知识--->修改测试--->有问题--->修改、将出现问题的范围变小进行排除--->不断缩小直到真相现形!

20110608 ADD:
tomcat 连接 sql server2005时:
不能拿到connection,报错信息:cannot create jdbc driver of class “某某某” for connect url “某某某”:
改正: 将context.xml文件中Resource配置的:
url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=某数据库;SelectMethod=Cursor"
改成:
url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=某数据库;SelectMethod=Cursor"
(数据库版本:Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)   Nov 24 2008 13:01:59   Copyright (c) 1988-2005 Microsoft Corporation  Express Edition with Advanced Services on Windows NT 5.1 (Build 2600: Service Pack 3) ,未打sp4补丁)
若是报错:cannot create jdbc driver of class “某某某” for connect url “null”,那就可能需要打sp4补丁了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-337549-1-1.html 上篇帖子: ssh 不能释放tomcat数据库连接池中的连接 下篇帖子: Tomcat配置任意目录下的Web应用程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表