Java/JSP QnA

16481 킬리만자로의 표범
2012-05-05 12:59:32
jsp,mysql db연동시 의문점..

jsp connection불러오는 부분에 관한 질문입니다. db는 mysql, server는 tomcat입니다.

ConnectionContext 클래스를 이용해서 jsp에서 conection을 얻어오는데

제가 db에서 커넥션을 얻어오는 방법은 예를들면 이런식 입니다.

<%@ page import="thinkonweb.util.ConnectionContext" %>

Connection conn = ConnectionContext.getConnection();

ConnectionContext 의 소스는 아래와 같고요, 이거랑 같이 server.xml 에 db연동하는 부분을 추가해서 사용하는거죠..

package thinkonweb.util;
import java.sql.*;
import javax.naming.*;
import javax.sql.DataSource;
public class ConnectionContext {
private static String jndiName = "jdbc/mysql";
private static Connection conn = null;
public static Connection getConnection()
{
if (conn!= null)
return conn;
try {
Context initContext = (Context)new InitialContext().lookup("java:comp/env/");
DataSource ds = (DataSource)initContext.lookup( jndiName);
conn = ds.getConnection();
}
catch(Exception e) {
e.printStackTrace();
}
return conn;
}
}

jsp처음 배울때 예제를 따라하면서 만든 클래스파일인데요,, 아래 소스를 컴파일한 클래스파일을 webapp폴더에 집어넣어서

connetcion을 얻어옵니다. 이전까지는 아무문제 없이 사용하다가 어느날 문제가 발생했습니다.

Statement를 얻어오는 createStatement() 부분에서 익셉션이 발생하는겁니다. 다음과 같은 익셉션이 발생하는겁니다.

java.sql.SQLException: Connection is closed

그래서

<%@ page import="thinkonweb.util.ConnectionContext" %>

Connection conn = ConnectionContext.getConnection();

기존에 커낵셕을 얻어오는 방식을 버리고

try {
Class.forName("org.gjt.mm.mysql.Driver");
} catch (ClassNotFoundException e ) {
out.println(e);
}

// DB와 연결한다.
try{
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/qna?useUnicode=true&characterEncoding=utf-8","root","11234441");
} catch (SQLException e) {
out.println(e);
}

직접 db에서 커넥셕을 가지고왔더니 정상적으로 동작합니다.

왜이런문제가 발생할까요 .. 고수님들의 답변 부탁드립니다.



  • 위방법은 와스에서 쓰는 커넥션 풀을 사용해서 커넥션을 받아오는거구-_-
    아래꺼는 그냥 jdbc 이용해 다이렉트로 커넥션 맺는건데..
    위에방법이 사용하다 갑자기 스태트먼트 만들때 커낵션 클로우즈 라면..--__-- 디버깅을 한번 더해보심이.. 힌트 뷰족~~ 실?~
    ※ 제대로 사용한후 클로우즈는 해주긴하나여??
  • 6931visualkhh
  • 2012-05-05 20:55:06
  • x
  • WAS에서 만든 Connection Pool에서 넘겨주는 Connection 객체에 문제가 있는듯 하네요..
    일단 WAS에서 DB 서버로의 통신이 원할한지 체크해보고 그런담에 문제가 없다면 디버깅을 해봐야 할듯 하네요....
  • 9464Terry
  • 2012-05-06 00:07:39
  • x



다음글 이벤트 발생시 action클래스에서 session id를찍어보니...
>> 59523 jsp,mysql db연동시 의문점..  [3] 킬리만자. 1512 2012-05-05 12:59:32
이전글 jQuery datepicker 질문 드립니다.