首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

java web项目配备tomcat连接池的那些搓事

2012-07-01 
java web项目配置tomcat连接池的那些搓事引言:??? 博客停了两天了,今天有点时间了,写点排Tomcat连接池BUG

java web项目配置tomcat连接池的那些搓事

引言:

??? 博客停了两天了,今天有点时间了,写点排Tomcat连接池BUG的总结贴吧。肯定对新手有帮助~。=


正文:

??? 本文包含两部分内容。第一部分是在eclipse下配置项目自身的连接池,这块有问题的比较多主要解决两个异常。第二部分是在Tomcat下配置全局连接池,这块有官方文档问题较少,简单过一下。

??? 本文的样例老规律,您可以在文尾下载到他。其中,测试获取连接写法如下:

?

// 获取Content对象javax.naming.Context ctx = new javax.naming.InitialContext();javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("java:/comp/env/jdbc/webdb");Connection conn = ds.getConnection();

?

第一部分:eclipse下配置连接池

==操作非常简单步骤如下==

??? 1,编辑\WEB-INF\web.xml(如果没有看一下项目是不是j2ee或者java web吧,两个叫法同一回事)。

????? 向<web-app>尾部追加子结点<resource-ref>具体内容如下:

?

<resource-ref>    <!-- 连接池名,一般为“jdbc/<数据源名>”,与context.xml -->    <!--   中的"<Resource>.name"对应即可 -->    <res-ref-name>jdbc/webdb</res-ref-name>    <res-type>javax.sql.DataSource</res-type>    <res-auth>Container</res-auth></resource-ref>

?

??? 2,编辑\META-INF\context.xml(如果看不到,新建一个吧)。

????? 内容如下:

?

<?xml version="1.0" encoding="UTF-8"?><Context>    <WatchedResource>WEB-INF/web.xml</WatchedResource>    <Resource name="jdbc/webdb" auth="Container"        type="javax.sql.DataSource"        driverClassName="com.mysql.jdbc.Driver"        url="jdbc:mysql://10.0.2.128:3306/webdb?characterEncoding=UTF-8"        username="number"        password="znb041"        maxActive="200"        maxIdle="50"        maxWait="3000">    </Resource></Context>

?

??? 3,检查环境。

????? A)数据库jdbc包,已在lib目录,且被引入Build Path下;
????? B)数据库处于运行状态。
????? C)创建Tomcat6 Server,启动空跑成功,且访问到默认页面。

??? 4,从eclipse启动“Tomcat v6.0 Server”。

==常见的两个报错==

??? 1,“did not find a matching property”(跟池无关,细节自查)如下所示:

?

2011-7-8 11:24:29 org.apache.tomcat.util.digester.SetPropertiesRule begin警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:webdemo' did not find a matching property.

?

??? 解决:

????? A)打开Servers视图(eclipse | show view | others... | Servers);
????? B)打开前面创建的“Tomcat v6.0 Server”(双击就成),停掉此Tomcat Server;
????? C)找到“Server Options”,给“publish module contexts to separate XML files”打勾选中,保存;
????? D)再次启动Tomcat Server,解决。

??? 2,“Cannot create JDBC driver of class '' for connect URL 'null'”,如下所示:

?

信息: Server startup in 237 msorg.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)

?

??? 解决:

????? 出现这个提示,说明web.xml中的<resource-ref>已被接受。只是查找不到<res-ref-name>指定的数据源。因此,跟网上所说的anyoneormore in{jdbc包啦,环境变量啦,tomcat配置啦,换MyEclipse啦,重装猫和日蚀啦,杀毒还原系统啦,上传你的代码啦。。。}都无关,只是简单地读不到源。因此,要检查的是:
??????? A)context.xml标签值,是否真有空,或者null(1%可能,系舍入进来的);
??????? B)玩个找茬游戏,看看这两字符串区别:“\META-INF\context.xml”,“\WEB-INF\context.xml”……之后,你懂的。

第二部分:Tomcat下配置连接池

==操作非常简单步骤如下==

??? 1,编辑\conf\server.xml。

????? 向<GlobalNamingResources>尾部追加子结点(切记是追加,别把“<Resource>.name=UserDatabase”的哥给整没了)。内容如下:

?

<GlobalNamingResources>    <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>    <!-- name值在下文有对应关系-->    <Resource name="jdbc/webdb"        auth="Container" driverClassName="com.mysql.jdbc.Driver"        maxActive="200" maxIdle="50" maxWait="3000"        username="number" password="znb041" type="javax.sql.DataSource"        url="jdbc:mysql://10.0.2.128:3306/webdb?characterEncoding=UTF-8" >    </Resource></GlobalNamingResources>
?

??? 2,编辑\conf\Catalina\localhost\webdemo.xml(文件名可随便起,没有就新建有就打开看看,结构一样就改改)。

????? 内容样本如下:

?

<Context path="/webdemo" docBase="/webdemo" debug="0">    <!-- 与上文“server.xml”中的<Resource>.name对应 -->    <ResourceLink name="jdbc/webdb"        global="jdbc/webdb"        type="javax.sql.DataSource" /><Context>

?

??? 3,启动\tomcat*\bin\startup.bat,测试。如报异常,请参看第一部分。因为官方有文档,问题不大。

?

?

??? 如有其他相关问题,欢迎尾随交流~。=

?

??? 我自己也被搞蒙过,话说——“BUG少的人不是没有道理的。

?

??? (完结)

?

?

?

?

?

?

先放着!

恩,呵呵~

热点排行