日期:2014-05-18  浏览次数:20679 次

tomcat连接池和webapps 问题,急!
我的环境是eclipse3.3\tomcat5.5\jdk5.5\win2003.程序是通过数据库连接池的方式与sqlserver2000建立连接。以前建立的项目没有问题。现在建立的项目有两个问题

1、在eclipse里建立的tomcat项目,不用放在tomcat下的webapps下就可以直接访问,现在的非要放到那个目录下才行。不知道是怎么回事?

2、连接池失效。运行程序提示conn链接为空。

对照了新旧两个项目,好像其他配置都一样,但是新项目的WEB-INF下缺少一个web。xml。请问各位,是这个问题吗? 另外,这个web。xml是怎么产生的?我看旧项目里的都是一些servlet配置,但是新项目里还不需要servlet。

请大家帮忙看看? 当然也可能不是web。xml文件的问题。有点着急,都三天了!!谢谢

------解决方案--------------------
我 好像同你遇到过同样的问题 http://blog.csdn.net/caoyinghui1986/archive/2008/06/06/2516877.aspx

注意 blog 中 的
如果你吧你的项目部署到tomcate还是不能获得连接。 这是你要在 C:\Tomcat 5.5\conf\Catalina\localhost 下新建一个xml 文件 (tomcatePool.xml)
这句 。

------解决方案--------------------
1、在eclipse里建立的tomcat项目,不用放在tomcat下的webapps下就可以直接访问,现在的非要放到那个目录下才行。不知道是怎么回事? 
他在server.xml做过映射,虚拟路径。新的tomcat没有。

2、连接池失效。运行程序提示conn链接为空。
新的tomcat需要重新配置datasource
------解决方案--------------------
探讨
我是在eclipse里建立的tomcat project;另外,我刚才把tomcat/conf下的web。xml拷贝过来执行同样提示错误。郁闷ing

------解决方案--------------------
我用的数据库是MySQL5.0,所以首先要把MySQL的
JDBC驱动程序拷贝到Tomcat安装目录的/common/lib下和你自己网站的/WEB-INF/lib下。
Server.xml的修改我推荐使用Tomcat的Admin组件完成,完全图形化配置,相当容易。或者按下面的写法在

<GlobalNamingResources></GlobalNamingResources>之间写如下配置(仅供参考,各位用的时候,请改成自己
数据库的配置):

<Resource
name="jdbc/mysql"
type="javax.sql.DataSource"
password="******"
driverClassName="org.gjt.mm.mysql.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://127.0.0.1/test"
maxActive="4"/>

然后,在Tomcat安装目录下/conf/Catalina/localhost文件夹中建立一个和你网站文件夹名字一样的
例如:TestSourse.xml。内容如下:
<?xml version="1.0" encoding="UTF-8"?><Context>
<Resource
name="jdbc/mysql"
type="javax.sql.DataSource"
password="******"
driverClassName="org.gjt.mm.mysql.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://127.0.0.1/test"
maxActive="4"/>
</Context>

其实就是把Server.xml的内容再重复一遍。这一步非常重要,如果没有这步就会出错,会出现
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class ''
for connect URL 'null'错误。
最后,在你自己网站的/WEB-INF/web.xml文件中,添加一下代码(参考):
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
OK。配置全部完成。现在你可以写代码测试这个数据库连接池了。如:
DataSource ds = null;
InitialContext ctx=new InitialContext();
ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mysql");
Connection conn = ds.getConnection();
数据库连接对象得到了。