程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Tomcat6.x+struts1.x+MySQL5.x連接池問題

Tomcat6.x+struts1.x+MySQL5.x連接池問題

編輯:關於JAVA

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()測試,必須和前台結合;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved