Tomcat6.x+struts1.x+MySQL5.x 접속 풀 문제

2865 단어 sqltomcatmysqlxmljdbc
1. 프로젝트의 WebRoot/META-INF 아래에 context를 만든다.xml 파일, 이 디렉터리에 있어야 합니다. Tomcat은 자동으로 이 파일을 찾습니다. Tomcat6.0 이후에는 웹에서 사용할 필요가 없습니다.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 디렉토리에 있습니다. 참고: 항목의lib 대신 Tomcat의lib입니다.(왜 그런지 모르겠지만, 이전에 이런 연결 탱크를 사용하지 않았을 때 프로젝트의lib에 놓으면 연결이 성공할 수 있었지만, 지금은 안 된다. 개인적으로는 context.xml로 인해 Tomcat가 프로젝트의lib에 있는 드라이버를 찾지 않고 자신의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() 테스트를 직접 쓸 수 없으며 프론트 데스크톱과 결합해야 합니다.

좋은 웹페이지 즐겨찾기