2009/11/20 09:14 CodeIN/Java
크리에이티브 커먼즈 라이선스
Creative Commons License

으~ 역시 웹은 재미있지만 어렵군요..저에게는 ㅎㅎ

 

DBCP 연동 테스트도 끝나고 ㅎ 이제는 connectionPool을 제대로 활용을 해야하는데 어떻게 해야할지 잘 모르겠더라구요 ㅎ

 

검색과 질문 끝에 싱글톤을 이용하면 된다고 하시더라고요.

 

하늘이님 답변(코드인 자바 http://cafe.naver.com/javacircle) :
싱글턴으로 만들어서 생성자에 룩업 구문 넣고 커넥션만 리턴하는 메서드 만들어서 쓰심 됩니다.

 

싱글톤이 무엇인지는 알고 있는데 한번도 사용해볼 일이 없었네요.

그래서 다시 공부하면서 사용해봅시다!!

 

아래 자세히 설명되어 있군요. 순서대로 읽어보시면 금방 이해하실 수 있으실 것입니다.

Singleton에 대한 설명

Java에서 Singleton 패턴 제대로 구현하기

 

아래 사이트에 정말 제대로 설명이 되어 있습니다. 꼭 한번 읽어보시길.

멀티스레드 환경에서 Singleton pattern을 이용할 시 문제가 될 만한 이야기를 하고 있는데요, 왜 그런 문제가 발생할 수 있는지 설명하고 있습니다. 그리고 synchronized를 이용한 해결 방법도 이야기합니다. 저는 아직 이런 것을 사용할 만한 실력(?)이 안되기 때문에 Singleton pattern 사용방법만 알아보겠습니다.

출처 : Double-checked locking and the Singleton pattern

 

import java.util.*;
class Singleton
{
  private static Singleton instance;
  private Vector v;
  private boolean inUse;

  private Singleton()
  {
    v = new Vector();
    v.addElement(new Object());
    inUse = true;
  }

  public static Singleton getInstance()
  {
    if (instance == null)          //1
      instance = new Singleton();  //2
    return instance;               //3
  }
}

 

위 소스 보면서 만들어 보았습니다. 참 쉽죠잉~ 근데 잘 만들었는지는 모르겠네요 크크

DBconnector 클래스

 

public class DBconnector {
    private static DBconnector instance;
    private Connection con;
    private Context envContext;
    private DataSource ds;
    private DBconnector(){
        try {
            envContext = (Context) new InitialContext().lookup("java:/comp/env");
            ds = (DataSource) envContext.lookup("jdbc/VPLook");
            con = ds.getConnection();
        } catch (SQLException ex) {
            Logger.getLogger(DBconnector.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NamingException ex) {
            Logger.getLogger(DBconnector.class.getName()).log(Level.SEVERE, null, ex);
        }
    }


    public static DBconnector getInstance(){
        if(instance==null){
            instance = new DBconnector();
        }
        return instance;
    }

 

    public Connection getConnection(){
        return con;
    }
}

 

 

 

 

posted by 조금까칠한남자
prev 1 ... 86 87 88 89 90 91 92 93 94 ... 639 next