다른 사람들의 코드를 리팩토링하고 있습니다. 내가 주목하는 한 가지는 시스템이 연결 풀에서 연결을 얻는 방법에 관한 것입니다.연결 풀에서 데이터베이스 연결 얻기
샘플은 다음과 같습니다. 서비스 메소드를 호출 할 때마다 시스템은 JNDI에서 데이터 소스에 대한 컨텍스트 검색을 수행합니다.
public class CheckinServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
//Obtain Connection
InitialContext initialContext = new InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource) initialContext
.lookup("jdbc/mysqldb");
java.sql.Connection conn = ds.getConnection();
//business logic
//redirect
} finally {
conn.close();
}
}
}
매번이 작업을 수행 할 때 성능이 저하된다고 생각합니다. 연결 풀에서 연결을 검색하는 방법에 대한 다른 방법을 생각 중입니다.
서블릿의 init()
메서드를 사용하려고 생각하고 있지만 최적이 아니라고 생각합니다.
안녕하세요, 항상 자세한 답변을 주셔서 감사합니다. 그러나 한가지는 저를이 문제에 대해 계속 생각하게합니다. Datasource 객체를 컨텍스트 와이드 매개 변수로 배치하는 이유는 무엇입니까? 우리는 단지 getDataSource() 메소드를 정적으로 만든다. 나는이 답변을 정말 좋아하지만 이것을하기위한 이유를 더 배우고 싶다. 고맙습니다.. –
그것도 좋은 디자인을 참조하십시오. 'DataSource'는 하나의'Config' 인스턴스에만 국한되며, 여러 개의'Config' 인스턴스에는 국한되지 않습니다. 이 특별한 경우에는 하나만 존재합니다. – BalusC
contextDestroyed (ServletContextEvent)가 호출되면 데이터베이스 연결이 닫힙니 까? –