这短时间在做一个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下的文件。