2014-02-20 3 views
0

서블릿간에 데이터베이스 연결을 공유하고 싶습니다. 서블릿 간 연결 풀 공유

나는 연결 풀을 생성하고 난 각각의 서블릿 그냥

connection = dataSource.getConnection(); 
을 할 수 있도록 내가 서블릿 사이에이 DataSource 오브젝트를 공유하고 싶습니다 지금이

Context envContext = (Context)context.lookup("java:/comp/env"); 
dataSource = (DataSource)envContext.lookup("jdbc/limedb"); 

같은 데이터 소스 오브젝트를 취득

자체 연결을 얻으십시오.

이것을 수행하는 가장 좋은 방법은 무엇입니까? 응용 프로그램 시작시 풀을 만들어 어딘가에 저장하고 싶습니다 ...

+0

... 왜 풀 서블릿이 동일한 연결을 공유해야하는 경우? 그리고 당신은 정말로 이것이 당신이 원하는 것이라고 확신합니까? 그것은 동시성 지옥처럼 보인다. – Gimby

+0

그들이 어떻게 똑같은 연결을 공유하도록 만드시겠습니까? – Phate

+1

큰 오해가 있다고 생각합니다. 풀은 응용 프로그램이 시작될 때 이미 만들어져 저장됩니다! 'context.lookup()'을 사용하면 참조 만 할 수 있습니다 ... 더 깨끗한 방법은'@ Resource'를 사용하는 것입니다. – BalusC

답변

1

실제로이 작업을 수행 할 수있는 몇 가지 방법이 있습니다.

  1. 종속성 주입 프레임 워크를 사용하면 이러한 연결을 관리 할 수 ​​있습니다. 뒤에서는 객체 풀을 사용합니다.
  2. 데이터 소스가 들어있는 객체 풀을 관리하는 싱글 톤 객체를 만들 수 있습니다.
  3. 연결을 반환하는 코드가 포함 된 싱글 톤을 작성할 수 있으므로 데이터 소스를 사용하고 있다는 사실을 알 필요가 없습니다.

그것은 모든, 당신은 자바와 함께 얼마나 잘 알고, 응용 프로그램의 전체적인 디자인, 사용 사례에 따라 등