一个下午,为的就是这20毫秒

原创 2006年05月18日 20:16:00

        前几天费了九牛二虎之力终于实现了jsp与mysql和mssql的成功连接,原以为下个驱动就可以了事了,可万万没想到会有那么多事... ...
        今天趁还有兴致,就打算用刚弄成功的连接做一些数据库测试,花了一个上午写了一些常用数据库操作类(这是我的习惯了,呵呵),虽然在写这些类的时候也碰到了不少小问题,但稍微借助Internet就很快都搞定了,把写好的类测试了一下,还真不错,看了一下平均页面处理时间(操作:插入一条记录):40MS,总觉得有点不爽,问题很快就找出来了, 出在数据库连接类上,就光连接平均时间要:28MS,最低也在16MS,要是能省去数据库连接这部就好了,马上就想到前几天看过一本JSP技术内幕这本书,里面有介绍关于共享连接,后来在网上查了一些资料,有很多CSDN网友都不推荐用共享连接,推荐最多的是用连接池.
        一个人的话可能不可信,众人的话总是有他们一定的道理的.于是打消物理连接这种方法(毕竟我是菜菜嘛,当时没想那么多,以为一实现连接就OK了,呵呵),开始配置连接池.
        长话短说,在下面我大概讲一下我配置的大概经过之前,我先说一下我的开发环境:
        OS:  XP SP2
        DMS: MYSQL5.0
        Server: Tomcat 5.5
        Language: JAVA
      网上有很多关于tomcat配置连接池的文章,但大多数都是介绍5.0的,而且很多文章长的都是一个样的,当然了,要是能一步到位都无所谓了,我们讲究的是效率嘛,可不知道为什么,我每次都不能一帆风顺,这次也不例外,按网上的方法配置server.xml ,web.xml,重新启动服务器,执行出错,这也是我预料中的了,后来把错误信息在baidu上搜索了一下,找到好多相关的文章,硬着头皮一个一个的看过了,网页是换了好多个,但错误还是原来那样:Name jdbc is not bound in this Context  ,就因为这个错误我都搞了N个小时,后来试着用ADMIN来配置(一开始没用的原因是因为有不少网友说在5.5下该方法一般不行),只能死马当活马医了,要是这次又不行,我只能把tomcat降到5.0了,在用ADMIN之前说一下5.5的admin要自己去下过来,自己没有带的,可能官方也是从安全上考虑的吧,下过来直接覆盖相关文件夹就可以了,还有要注意的是在root下把原来的admin文件夹删除掉,不然你甭想进去:)  进入admin页面后,填了相关参数(很简单的操作),重新启动服务器,当时我是闭着眼睛的,怕又会看到那个错误,......是祸怎么躲也躲不了,还是那样...............................................那时真的无奈了,进入d:找到tomcat按下了del,这时只要敲个回车,我就要回到5.0的时代了,真有点不忍心,.......................作了好长的思想斗争后,最好还是没勇气按下去(可能我还不认输吧),点了取消后,又在网上毫无希望的找.................................

       最后在一个个人博客上找到了与我相似的一篇文章,一看....呵呵,不说了,大概大家也猜到了.....问题解决,现在我总结一下我在5.5下配置连接池的几个重要的步骤:

      登陆ADMIN---------------->填写相关参数------------->在conf下找到context.xml,在</Context>前加入  <Resource
      name="jdbc/mysql"
      type="javax.sql.DataSource"
      password="123456"
      driverClassName="com.mysql.jdbc.Driver"
      maxIdle="30"
      maxWait="10000"
      username="root"
      url="jdbc:mysql://localhost/database"
      maxActive="200"/>

这是最重要的一点,后来经过跟踪发现,在进入admin配置时,所影响到的页面有这么几个,conf/server.xml,ROOT/META-INF/context.xml   注意了不是上面那个context.xml

其实配置连接池就这么简单,其他细节问题我就不说了,希望这篇文章对像我昨天一样那么无奈的你有点帮助,有问题可以一起交流交流.

参考网上作的一些笔记:

一.在tomcat_home/common下放入jdbc的三个驱动程序(一定要的哦),可以在微软的网站上去下载,安装的SQLSERVER2k默认的用户名是sa,密码是空,但密码为空并不代表没有密码,所以你的url中一定要定义username和password,最好是重设定一下密码
二.出现不能引用错误的话一般就是路径没有写对,tomcat默认的路径是tomcat_home/webapps/不过使用5.5.x的话,按下面方法就行,不需要配置路径,而且也不用在youwebapp/WEB-INF/web.xml文件配置引用
三.tomcat5.5.x版的server.xml配置与tomcat5.0的配置不同,下面列举三种在tomcat5.5.x的配置方法,如果配置不正确会出现javax.naming.NameNotFoundException: Name is not bound in this Context 错误
方式一、全局数据库连接池
1、通过管理界面配置连接池,或者直接在tomcat/conf/server.xml的GlobalNamingResources中增加
<Resource name="jdbc/mydb" type="javax.sql.DataSource" password="mypwd" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validationQuery="select 1" username="sa" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive="4"/>
2、在tomcat/webapps/myapp/META-INF/context.xml的Context中增加:
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>
这样就可以了。
方式二、全局数据库连接池
1、同上
2、在tomcat/conf/context.xml的Context中增加:
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>
方式三、局部数据库连接池
只需在tomcat/webapps/myapps/META-INF/context.xml的Context中增加:
<Resource name="jdbc/mydb" type="javax.sql.DataSource" password="mypwd" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validationQuery="select 1" username="sa" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive="4"/>
参数说明:
driveClassName:JDBC驱动类的完整的名称;
maxActive:同时能够从连接池中被分配的可用实例的最大数;
maxIdle:可以同时闲置在连接池中的连接的最大数;
maxWait:最大超时时间,以毫秒计;
password:用户密码;
url:到JDBC的URL连接;
user:用户名称;
validationQuery:用来查询池中空闲的连接。
以上三种方式在tomcat 5.5.4下都可以。另外,sql server的jdbc driver是从微软网站上下载的sql server jdbc (sp3)。
四.报错org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory ([Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.)此是一个小问题,因为我的SQLSERVER2K的服务改成手动的,所以每次启动后就要手动的启动SQLSERVER2K,由于一下子不记的启动了,所以报些错误,所以如果你经常要用到SQLSERVER2K的话,最好不要将其改为手动启动

将1、2、...、20这20个数排成一排,使得相邻的两个数之和为一个素数,且首尾两数字之和也为一个素数。

将1、2、...、20这20个数排成一排,使得相邻的两个数之和为一个素数,且首尾两数字之和也为一个素数。 这里提供了三种方法: (注意:为了让程序更快,根据排列的特点,每种方法都固定了...
  • koudaidai
  • koudaidai
  • 2012年10月17日 18:32
  • 2173

PAT (Basic Level) Practise (中文)1002. 写出这个数 (20)

1002. 写出这个数 (20) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 8000 B ...
  • wyxdexyq
  • wyxdexyq
  • 2014年04月09日 10:05
  • 5479

《这就是搜索引擎:核心技术详解》读书笔记

学Java的时候也顺便看了一下网上的一个爬虫的源码,感觉看完了收获也很有限,只是大概了解了一下其基本思路:从用户添加的种子URL作为起点,不断请求web页面,然后从页面中提取出新的URL,添加到爬取队...
  • hust_dxxxd
  • hust_dxxxd
  • 2016年05月03日 22:12
  • 571

把从1到20这20个数摆成一个环,要求相邻的两个数的和是一个素数

把从1到20这20个数摆成一个环,要求相邻的两个数的和是一个素数。 分析:用回溯算法,考察所有可能的排列。 用4个数字做个测试: #include #include #include voi...
  • shangzhaohui
  • shangzhaohui
  • 2011年12月07日 11:59
  • 741

丑数(数论)

Description 丑数就是这个数的质因子只有2,3,5,7这四个,除此之外不再含有其它 别的质因子。 注意1也被认为是丑数.丑数的前20个为 1, 2, 3, 4, 5, 6, 7, 8...
  • u011292087
  • u011292087
  • 2014年01月10日 19:13
  • 608

一个数如果恰好等于除它本身外的因子之和,这个数被成为”完数”,例如:6=1+2+3.请编程找出1000以内的完数

//一个数如果恰好等于除它本身外的因子之和,这个数被成为”完数”,例如:6=1+2+3.请编程找出1000以内的完数 #include int wanshu(int n); int m...
  • huangchun96
  • huangchun96
  • 2016年10月28日 23:24
  • 2568

1002. 写出这个数 (20) JAVA

1002. 写出这个数 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN...
  • bin8632
  • bin8632
  • 2015年12月08日 11:19
  • 1200

《这才是马云》读书笔记

今天读完了《这才是马云》这本书,感觉这本书挺逗的,本来以为是一本普普通通的人物传记,借的时候看到书的作者是马云的助理,感觉应该能描写一个最为真实的马云。事实上的确如此,通过这本书,我认识了一个不一样的...
  • puppet_master
  • puppet_master
  • 2014年11月26日 10:02
  • 1201

京东笔试——异或

题目:异或运算是常见的二进制运算,给出两个n位二进制数a,b。a异或b的运算依次考虑二进制的每一位,若这一位 相同,那么这一位的异或结果就是0,不同就是1。例如a=1100, b=0100。执行a异...
  • Travelerwz
  • Travelerwz
  • 2017年04月08日 18:32
  • 212

关于相邻两数之和为素数的解答

 题目:巧排数字。将1、2、...、20这20个数排成一排,使得相邻的两个数之 和为一个素数,且首尾两数字之和也为一个素数。编程打印出所有的排法。    先说下这道题的思路,肯定是应该用回溯的方法。穷...
  • robertzhang10
  • robertzhang10
  • 2007年01月21日 13:22
  • 1584
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个下午,为的就是这20毫秒
举报原因:
原因补充:

(最多只允许输入30个字)