java web项目配置tomcat连接池的那些搓事
2012-12-14 16:19
513 查看
本文包含两部分内容。第一部分是在eclipse下配置项目自身的连接池,这块有问题的比较多主要解决两个异常。第二部分是在Tomcat下配置全局连接池,这块有官方文档问题较少,简单过一下。
本文的样例老规律,您可以在文尾下载到他。其中,测试获取连接写法如下:
Java代码
// 获取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>具体内容如下:
Xml代码
<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代码
<?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”(跟池无关,细节自查)如下所示:
Java代码
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'”,如下所示:
Java代码
信息: Server startup in 237 ms
org.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”的哥给整没了)。内容如下:
Xml代码
<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(文件名可随便起,没有就新建有就打开看看,结构一样就改改)。
内容样本如下:
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,测试。如报异常,请参看第一部分。因为官方有文档,问题不大。
本文的样例老规律,您可以在文尾下载到他。其中,测试获取连接写法如下:
Java代码
// 获取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();
// 获取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>具体内容如下:
Xml代码
<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>
<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代码
<?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>
<?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”(跟池无关,细节自查)如下所示:
Java代码
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.
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'”,如下所示:
Java代码
信息: Server startup in 237 ms
org.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)
信息: Server startup in 237 ms org.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”的哥给整没了)。内容如下:
Xml代码
<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>
<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(文件名可随便起,没有就新建有就打开看看,结构一样就改改)。
内容样本如下:
Xml代码
<Context
path="/webdemo"
docBase="/webdemo"
debug="0">
<!-- 与上文“server.xml”中的<Resource>.name对应 -->
<ResourceLink
name="jdbc/webdb"
global="jdbc/webdb"
type="javax.sql.DataSource"
/>
<Context>
<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,测试。如报异常,请参看第一部分。因为官方有文档,问题不大。
相关文章推荐
- java web项目配置tomcat连接池的那些搓事
- java web项目配置tomcat连接池的那些搓事
- JSP项目配置TomCat连接池遇到的问题!!!(真绝)
- 在Tomcat 7配置Servlet 3.0项目的MySQL 5.5的DBCP连接池
- 配置JDK、tomcat及Java Web项目部署
- 项目中用Tomcat自带连接池的配置数据库
- linux环境配置java web项目之三——安装tomcat
- 项目中用Tomcat自带连接池的配置数据库
- Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat的家伙们)详解二
- 导入项目,用Tomcat自带连接池来配置Oracle数据库
- 关于tomcat那些事情 - tomcat6.0 配置ip地址访问不用加端口和项目名
- 使用Eclipse进行Java Web项目开发注意事项-Tomcat配置
- 在项目中使用了tomcat的数据库连接池的配置过程
- Mac下Intellij IDea15 破解方法及配置Tomcat发布Java Web项目
- eclipse 和 IDEA java web 项目环境搭建演示,以及TOMCAT 的配置
- eclipse环境 Java web项目的Tomcat配置
- Java Web笔记:搭建环境和项目配置(MyEclipse 2014 + Maven + Tomcat)
- Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat)
- 阿里云服务器CentOS7配置Java Web项目运行环境(MySql,Tomcat,Jre)
- Java Web项目maven + tomcat配置与部署方案