tomcat配置c3p0数据库连接池遇到问题与解决

这短时间在做一个Android项目,由于牵扯到数据库,也就有服务器。app预期是想做大,所以一方面考虑到性能相关

因此就想把tomcat和比较知名的c3p0结合起来,从这一方面来提高性能。

首先第一步:把c3p0解压文件夹的3个jar包全部考到tomcat根目录下lib文件夹下面,当然还有数据库连接jar包。

第二步:配置server.xml以及content.xml;

server.xml中:

在GlobalNamingResources节点下加入(不同数据库自行修改):

  	 <Resource
              name="jdbc/sign"
              auth="Container"
              description="DB Connection"
              factory="org.apache.naming.factory.BeanFactory"
              type="com.mchange.v2.c3p0.ComboPooledDataSource"
              driverClass="com.mysql.jdbc.Driver"
              jdbcUrl="jdbc:mysql://localhost:3306/sign?autoReconnect=true"
              user="root"
              password="123456"
              maxPoolSize="200"
              minPoolSize="20"
              acquireIncrement="1"
              />
在content.xml中加入源引用
	<ResourceLink name="jdbc/sign" global="jdbc/sign"  type="javax.sql.DataSource"/>  
在自己项目web.xml中加入:

    <resource-ref>
        <description>DB Connection</description>
        <res-ref-name>jdbc/sign</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
然后呢,在自己项目中这样引用:

			InitialContext ctx = new InitialContext();
			Context envContext = (Context)ctx.lookup("java:/comp/env");
			DataSource ds = (DataSource)envContext.lookup("jdbc/sign");
			conn = ds.getConnection();
貌似可以了哦。、。、。、。、。、。、。、。

然而,对于我,并不行,一开始就报错:

Cannot create JDBC driver of class '' for connect URL 'null'
按照字面意思来说,就是你的jdbcurl不对!所以我最开始就卡在这里。

就去修改url,开始把名字改成“url”,然后改回jdbcUrl,但是都不对。所以这条路应该不对。

后来,我又去认真对比了下我的web.xml中引用的name和server.xml中的name是否相同,以及是否与conten.xml否一致。

当然,后面经过检查修改后一致了,但还是有问题,还是这个错误。

后面,再继续,我想到了可能的一个方面,就是以前我没当回事的一个方面:

当我在eclipse中开启tomcat(路径是我电脑的,不是eclipse的)时,并不能访问http://localhost:8080/的tomcat主页,

但是却可以访问http://localhost:8080/Test/test.jsp,我怀疑可能是这里面的某个原因~

因为我改的tomcat是我电脑安装根目录下面的tomcat的server.xml。

在网上一番搜索后,终于发现不能访问tomcat主页的原因了:可能eclipse中启动的tomcat仅仅是一个shell,并不能启动tomcat全部服务,

并且,在我们配置tomcat时,有个选项也使得启动后不能进入tomcat主页:

在我们配置tomcat时,默认是选第一个,从字面意思上来理解,就是系统实际是发布带eclipse的一个目录下,并不是tomcat的webapp下面

所以才会导致在eclipse中启动http://www.tuicool.com/articles/7zMN3a

当我把server location改了后,发现还是不行,还是报

Cannot create JDBC driver of class '' for connect URL 'null'

后面,我又重新去tomcat的conf下面看server.xml和content.xml,发现我以前添加的数据源代码都不见了

然而我其实并没有在意,反正就几行,重新写过呗。

写好后,从eclipse启动,测试,还是报null driver的错误。此时我就很纳闷了。网上一小段找方法后,我又把思路放到了

conf文件夹的server.xml和content.xml,这时,我发现我改完的又不见了!!!!!!

貌似找到问题的引子了,我十分兴奋~~再一次求助网络,果然是server.xml和content.xml的原因:

Tomcat服务器在Eclipse中启动时,会自动发布Eclipse中部署的项目,但是我的项目是自己手动在外面部署的,

Eclipse只认得在它里面部署的项目,因此它会创建一个新的server.xml文件覆盖原来的文件,里面只有Eclipse中部署的项目。

  从该网页得到解决方法:

   解决方法:

解决方法一:http://www.tuicool.com/articles/iuu6bqF

设置Ecplise,取消掉自动发布功能。

依次选择 Window-Preferences-Server-Launching,取消Automatically publish wen starting servers,点击OK,搞定。

解决方法二:

Ecplise项目中有一个Server项目,有一个Tomcat v7.0 Server at localhost-config,

里面也有server.xml和content.xml,替换成你修改后的文件。Tomcat重新发布时会用这里的配置文件覆盖Tomcat下的conf下的文件。



















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值