Tomcat6.x+struts1.x+MySQL5.x连接池问题

1.在项目的WebRoot/META-INF下建context.xml文件,注意必须在该目录下,Tomcat会自动找这个文 件,Tomcat6.0以后就不用在web.xml中配置了:

<?xml version="1.0" encoding="UTF-8"?>
<Context reloadable="true" crossContext="true">

<Resource
name="jdbc/test" ----------注意:test为项目名
auth="Container"----------该项为不变项
type="javax.sql.DataSource"---------- 该项为不变项
driverClassName="com.mysql.jdbc.Driver"----------数据库驱动名
url="jdbc:mysql://localhost:3306/haotian?autoReconnect=true"-------url
username="root"----- 用户名
password="root"------密码
maxActive="10"   ------最大连接数
maxIdle="5"      --------最大空闲连接数
maxWait="-1"/>   ------最大等待毫秒数,-1为无限等待

</Context>

 

2.连接类:

public class DBConnection {
private Connection conn=null;
public Connection getConnection(){
  
    //生成上下文对象,通过它可以向容器发送别名.
    Context context;
    try {
     context = new InitialContext();
     //查找对象
     DataSource ds=(DataSource)context.lookup("java:comp/env/jdbc/test");//jdbc/test为配置文 件中的name
     //得到连接
     try {
      conn=ds.getConnection();
      } catch (SQLException e) {
      e.printStackTrace();
     }
     } catch (NamingException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   
   
   return conn;
}

 

3.把MySQL5.0的驱动包放到Tomcat的lib目录下,注意:是Tomcat的lib, 而不是项目的lib。(不知道为什么会这样,之前不用这种连接池的时候放在项目的lib中就可以连接成功,但是现在就不可以,个人认为可能是 context.xml使得Tomcat找自身lib中的驱动包,而不是项目中的驱动包)

 

4.测试:

  这里并非是在连 接类里面写个main()就可以测试成功的,如果这样会出现下面的错误:

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.lookup(Unknown Source)
at util.DBConnection.getConnection(DBConnection.java:26)
at util.DBConnection.main(DBConnection.java:49)

  所以,只有通过和前台结合 才能测试连接是否成功。

  总结:

  context.xml必须在项目的WebRoot/META-INF,Tomcat 会自动找这个文件;

  数据库驱动包必须放在Tomcat的lib目录下(可能是Tomcat会根据context.xml在自身的lib 目录下找驱动包);

  不可以直接在连接类中写main()测试,必须和前台结合;

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值