我的tomcat+mysql 数据库连接池配置详情

 

 

这两天一直在[痛苦]的配置Tomcat+MySQL的数据库连接池,搞了N长时间,脑袋都大了,现在终于搞定了.

有必要做一下详细记录啊~~~~~~

 

配置之前先是查看了大量的资料,虽然看起来配置过程似乎都不复杂也不是很难理解,不过自己一动手才发现完全不是那么一回事儿啊.

 

于是就开始了我痛苦的配置之旅....

 

首先在eclipse中打开tomcat 的server.xml找到当前工程的<context></context>

片断,在里面加入了<Resource>元素和一大堆参数,又在./WEB-INF/下的web.xml中使用<resource-ref>进行了引用,

我可是完全按照大家说的所配置的,但不只为什么还是问题多多...郁闷那!

 

刚一开始老是出现找不到绑定的JNDI资源的问题:

javax.naming.NameNotFoundException: 名称JDBC在上下文中没绑定

很明显是配置出了问题,于是我就查资料,发现还要在D:/Tomcat 5.5.26/conf/Catalina/localhost/下面新建个应用的xml文件,写上与server.xml中同样的内容.有点不解,网上说的都是配置全局数据源,可我只想用到单个应用里面的,

不知道是否还得配置.最后照着又做了.....(省略N次失败N次修改...)

 

还发现大家都说tomcat5.5与以前的5.0等版本配置上会有差别...晕啊

(看了下tomcat自带的说明文档的确和以前的不一样,不过倒是更简洁了,但是我配置成功之后又试了下以前的格式,也没有出问题啊,用的是5.5.26)

 

在解决上面那个问题时,好多人说MySQl配置连接池除了JDBC驱动还需要将一个包aspectjrt.ja放到D:/Tomcat 5.5.26/common/lib下面,我试了发现放不放对结果没影响啊...

 

后来那个绑定的问题不知道怎么就消失了...郁闷啊

好像是今天早上重新配了一遍就直接进到下面这个错误阶段了

突然想起前两天tomcat出了点问题,一直没修好,昨天晚上一气之下索性

重新下了个5.5.26的给重装了...看来是因为这个啊...

 

现在遇到的就是下面这个问题了

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

..............

...............

Caused  by: java.sql.SQLException: No suitable driver

刚开始没仔细思考,只看到上面的一句错误,搜索之后发现大家还是再说配置的问题,老天啊,我又来回检查了好几遍,真的觉得我的配置是一点问题都没有的啊,连个字母标点符号都没错啊....

就在快要崩溃时,看到了第二句错误,连起来才发现:原来上面的错误是由下面的造成的,我晕...怎么早先没看出来那...以前好像就曾因为JDBC版本的问题出现过毛病...

把mysql-connector-java-5.0.8.jar换成mysql-connector-java-3.1.14.jar

 

重启Tomcat,哈哈,整个世界终于变的美好了


整理配置代码如下:

Tomcat的server.xml------->>>

 

<Context docBase="netnote" path="/netnote"
     reloadable="true" source="org.eclipse.jst.j2ee.server:netnote">
  
     <Resource name="jdbc/netnote"

                      auth="Container"
                      type="javax.sql.DataSource"
                      driverClassName="com.mysql.jdbc.Driver"
                      url="jdbc:mysql://localhost:3306/gbook" <!-- 此处为该web应用的数据库名,注意不要写成web应用的名字或者JNDI资源的名字-->

                      username="root"
                      password="root"

                      maxIdle="30"

                      maxWait="5000"

                      maxActive="100" />

 

</Context>

应用WEB-INF/下面的web.xml----------->>>

(实际应用中xml中的中文注释要去掉)

<web-app>

   <!-- 省略的servlet相关配置 -->

   <!-- 下面引用配置好的JNDI资源-->

   <resource-ref>
        <description>mysql DB connection</description>
        <res-ref-name>jdbc/netnote</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
</web-app>

用来测试的JSP中的主要代码

<%
    String sql="select * from admins";
    Connection conn=null;
    Statement stmt=null;
    ResultSet rs=null;
try{
    InitialContext ctx=new InitialContext();
    DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/netnote");
    conn=ds.getConnection();
    stmt=conn.createStatement();
    rs=stmt.executeQuery(sql);
    while(rs.next()){
     out.println(rs.getInt(1)+"   "+rs.getString("username"));
    }
}catch(NamingException e){
     e.printStackTrace();
    }
    catch(SQLException e){
    e.printStackTrace();
   }catch(Exception e){
    out.println("数据库驱动加载失败!"+e);
    e.printStackTrace();
   }finally{
   
   }
%>

在这个过程中遇到了一些很有趣的问题,而且我现在也没搞明白是怎么回事.

 

如果不使用工具,手动创建web工程就需要在D:/Tomcat 5.5.26/conf/Catalina/localhost下面添加这个web应用对应的xml文件.

 

而如果在eclipse中新建一个工程,它会自动往tomcat的server.xml文件里的

<web-app>标签中写入相应的<context/>,而不是新建个<context> 片断.

 

以前我以为就是这样子的,不过这次才发现:

如果在eclipse中打开tomcat工程(默认生成的)下的server.xml会看到

在<web-app>中自动添加了相应的<context>片断,但是这时我们(不使用eclipse)再打开tomcat实际的server.xml会奇怪的发现<web-app>中竟然不存在我们刚才看到的<context>片断.

我对eclipse的机制也不了解,不清楚这到底是怎么一回事,唯一的解释我觉得

就是这两次看到的server.xml文件不是同一个文件,可能eclipse在内部做了一个映射.

~~~~~~~~总之就是搞不明百具体的原理,希望有人能告诉我是怎么一回事啊~~~~~~~

在此声明:

我以上的配置完全是使用eclipse打开xml进行配置并且成功的,如果部署发布应用时可能还需要在tomcat实际的文件中再进行配置.

位置应该就是D:/Tomcat 5.5.26/conf/Catalina/localhost和D:/Tomcat 5.5.26/webapps/具体web应用的名字/WEB-INF下面的xml文件了

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Tomcat配置数据库连接池参数的步骤如下: 1. 确保你已经将数据库驱动包(mysql-connector-java-8.0.26.jar)放置在Tomcat的lib目录下。 2. 打开Tomcat配置文件server.xml,该文件位于Tomcat安装目录的conf文件夹下。 3. 在server.xml文件到`<GlobalNamingResources>`标签,添加以下内容来配置数据库连接池参数: ```xml <Resource name="jdbc/yourDatabaseName" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="20" maxWaitMillis="10000" username="yourUsername" password="yourPassword" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/yourDatabaseName?useSSL=false"/> ``` 其,`name`属性是连接池的JNDI名称,`maxTotal`表示连接池最大的连接数,`maxIdle`表示连接池最大的空闲连接数,`maxWaitMillis`表示获取连接的最大等待时间(毫秒),`username`和`password`是数据库的用户名和密码,`driverClassName`是数据库驱动类名,`url`是数据库的连接URL。 4. 在`<Context>`标签,添加以下内容来关联连接池和具体的Web应用: ```xml <ResourceLink name="jdbc/yourDatabaseName" global="jdbc/yourDatabaseName" type="javax.sql.DataSource"/> ``` 其,`name`属性是连接池的JNDI名称,`global`属性是连接池在全局命名资源名称。 5. 保存server.xml文件并重新启动Tomcat。 现在,你已经成功配置Tomcat数据库连接池参数。你可以在你的Web应用使用JNDI名称jdbc/yourDatabaseName)来获取数据库连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值