tomcat5.0和tomcat5.5配置问题,二者是有区别的

2007-10-12 10:35:42  作者

每个项目都会在数据库上折腾一阵子,以前好搞定,因为都在TOMCAT5.0的基础上搞,不管是配ORCALE SQLSERVER2000还是MYSQL搞了N长时间已经习惯了.但是重来没有奢望过用TOMCAT5.5弄这些,我所习惯的使用TOMCAT5.5仅仅在proxool.xml这种配置方式下使用.但是我一直相信TOMCAT5.5一定能在所有方式下使用.因为配置仅仅是种方式.
昨天弄了一天,最后使用数据库时报了 Cannot create JDBC driver of class '' for connect URL 'null'这样的错.以为和以前一样一定是哪个地方配置文件写错,结果查了半天没有半个单词写错
上网查了查,原来好多兄弟和我一样都碰到过.按照某兄弟的写法试了下没有成功
咱们在TOMCAT5.0时期在TOMCAT_HOME\conf\Catalina\localhost里的XXX.XML里是这样配置数据库路径的
%26lt;?xml version='1.0' encoding='utf-8'?%26gt;
%26lt;Context docBase="D:\eclipse\workspace\BKGMS" path="/BKGMS" reloadable="true" workDir="D:\eclipse\workspace\BKGMS\work\org\apache\jsp"%26gt;
%26lt;Resource auth="Container" name="RedstoneSql" type="javax.sql.DataSource"/%26gt;
%26lt;ResourceParams name="better"%26gt;
%26lt;parameter%26gt;
%26lt;name%26gt;factory%26lt;/name%26gt;
%26lt;value%26gt;org.apache.commons.dbcp.BasicDataSourceFactory%26lt;/value%26gt;
%26lt;/parameter%26gt;
%26lt;parameter%26gt;
%26lt;name%26gt;url%26lt;/name%26gt;
%26lt;value%26gt;jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=bkgms%26lt;/value%26gt;
%26lt;/parameter%26gt;
%26lt;parameter%26gt;
%26lt;name%26gt;password%26lt;/name%26gt;
%26lt;value%26gt;sa%26lt;/value%26gt;
%26lt;/parameter%26gt;
%26lt;parameter%26gt;
%26lt;name%26gt;maxWait%26lt;/name%26gt;
%26lt;value%26gt;10000%26lt;/value%26gt;
%26lt;/parameter%26gt;
%26lt;parameter%26gt;
%26lt;name%26gt;maxActive%26lt;/name%26gt;
%26lt;value%26gt;100%26lt;/value%26gt;
%26lt;/parameter%26gt;
%26lt;parameter%26gt;
%26lt;name%26gt;driverClassName%26lt;/name%26gt;
%26lt;value%26gt;com.microsoft.jdbc.sqlserver.SQLServerDriver%26lt;/value%26gt;
%26lt;/parameter%26gt;
%26lt;parameter%26gt;
%26lt;name%26gt;username%26lt;/name%26gt;
%26lt;value%26gt;sa%26lt;/value%26gt;
%26lt;/parameter%26gt;
%26lt;parameter%26gt;
%26lt;name%26gt;maxIdle%26lt;/name%26gt;
%26lt;value%26gt;30%26lt;/value%26gt;
%26lt;/parameter%26gt;
%26lt;/ResourceParams%26gt;
%26lt;/Context%26gt;
按某兄弟的写法 在 %26lt;Resource auth="Container" name="better" type="javax.sql.DataSource"/%26gt;之前加上 %26lt;ResourceLink global="better" name="better" type="javax.sql.DataSource"/%26gt;即可搞定
但是重起TOMCAT后 报 unable to get connection :no suitable driver
我靠,我想这是不灵的,再查.大多数兄弟都说了,TOMCAT5.5和TOMCAT5.0配置不同
自Tomcat5.5以后,%26lt;context%26gt;元素的%26lt;Resoucepram%26gt;元素取消,原参数元素都以Resouce的属性出现.
而应该这样写,顺便把%26lt;ResourceLink %26gt;也加进去
%26lt;?xml version='1.0' encoding='utf-8'?%26gt;
%26lt;Context docBase="D:\eclipse\workspace\BKGMS" path="/BKGMS" reloadable="true" workDir="D:\eclipse\workspace\BKGMS\work\org\apache\jsp"%26gt;
%26lt;Resource auth="Container" name="better" type="javax.sql.DataSource" maxWait="10000" maxIdle="30" maxActive="100" username="sa" password="sa" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=bkgms"/%26gt;
%26lt;ResourceLink global="better" name="better" type="javax.sql.DataSource"/%26gt;
%26lt;/Context%26gt;
解释一下:1.path是指定访问该web应用的URL入口;

2.docBase指定web应用的文件路径,可以是绝对路径,也可以是相对于Host的appBase属性的相对路径;

3.type

4.maxActive是DBCP中处于活动状态的数据库连接的最大数目,取0表示不受限制

5.maxIdle是DBCP中处于空闲状态的数据库连接的最大数目,取0表示不受限制

6.maxWait是是DBCP中的数据库连接处于空闲状态的最长时间(以毫秒为单位)取0表示无限期等待

7.username是数据库登陆名

8.password是数据库登陆口令

9.driverClassName是只定数据库的jdbc驱动程序

10.url是指定连接数据库的URL,testDBCP是我的数据库名。

报 unable to get connection :no suitable driver

是从eclipse中启动tomcat,发现启动时找不到org.apache.commons.dbcp.BasicDataSourceFactory,于是把Resouce元素中的factory="org.apache.commons.dbcp.BasicDataSourceFactory"删去,于是错误解决。

当然不要忘记在web.xml中加
%26lt;resource-ref%26gt;
%26lt;description%26gt;DB Connection%26lt;/description%26gt;
%26lt;res-ref-name%26gt;better%26lt;/res-ref-name%26gt;
%26lt;res-type%26gt;javax.sql.DataSource%26lt;/res-type%26gt;
%26lt;res-auth%26gt;Container%26lt;/res-auth%26gt;
%26lt;/resource-ref%26gt;
不过假如使用SQLSERVER2000 也要确保打了SP4补丁