기술지원 문의

[Re][Re]resine dbpooling 문제입니다...
신동귀 / 2004-01-30 12:00

답변 감사드립니다.. 제가 표현이 좀 애매하게 한거 같습니다.
우선
  ic = (Context)new InitialContext().lookup(\"java:comp/env\");
  pool = (DataSource)ic.lookup(\"jdbc/test\");
을 통해서 풀을 얻는것을 생성이라고 표현한거 같습니다... 맞는지?
이렇게 풀을 얻어서 con = pool.getConnection();해서 con객체를 가지고 와서 쓰고 con.close()하고 나서 다시 쓸려면 NullPointerException이
발생합니다. 다시쓸려면 처음부터 다시 pool을 가지고 와서 써야되더군요...물론 conf에서 con수는 20으로 잡아놨습니다. 
어떻게 된건지 답답할 노릇입니다. 혹 프로그램 로직상에 문제가 있을 수도 있으니 ... 빈에서 풀을 로딩하는 메소드와 close하는 메소드(Release())를 만들어서  여러 JSP페이지에서 db쿼리하는 메소드를 마찬가지로 같은 빈에서 만들고 이것들을 가지고 와서 쓰고,release()메소드 호출해서 끊어주거든요..이때 다른 jsp페이지로 넘어와서 쓸려면 다시 빈에 있는 풀로딩 메소드를 호출해야 되더군요..딱 한번만 풀로딩을 해서 쓰고자 하는것이 목적이거든요...(JSP의 SCOPE를 PAGE로 해서 쓰고있음)..이게 잘못됐다면 이것도 작성법을 말씀해 주시면 감사하겠습니다. 

그리고 두번쨰로 풀사용이 appplication단위로 공유가 되는건지 알고 싶습니다.
즉 서버의부하를 최소화하기위해서 하나의 사이트에서 pool을 한번만 가지고와서 그 사이트내의 모든 연동페이지들이 그 풀의 컨객체를 썼다 릴리즈 했다하는 그런걸 원하거든요...그래서 이런것들이 이뤄질려면 코드로 해결해야할지 conf의 환결설정으로 가능한건지
등등 그방법에 대해 답변해 주시면 대단히 감사하겠습니다.. 그럼..

[Re][Re][Re]resine dbpooling 문제입니다...
관리자 / 2004-01-30 13:35

connection을 close하고, connection을 사용하려면 당연히 NullPointerExceptin이 발생합니다. 다시 getConnection 하셔야 합니다.

그리고, Resin pool에 대해 말씀드리자면
 Resin이 스타트 되면서 세팅되어 있는대로 pool이 생성됩니다. 우리는 jndi name통해 lookup해서 pool에 있는 connection을 얻어 사용하는 것 뿐입니다.
따라서 connection을 얻어 사용하려면 매번 jndi name통해 lookup해서 사용해야합니다.(새로 pool을 생성또는 로딩하는 것이 아니라, pool에 있는 connection을 얻어오는 것입니다)

두번째로 질문하신 답변은
resin.conf에 dbpool세팅하는 부분이 글로벌한 위치에 두시면 모든 host, 모든 web-app에서 사용할 수 있습니다.