java

DB를 이용한 채번

알 수 없는 사용자 2005. 11. 28. 22:47
채번 테이블을 가지고 날짜별로 번호를 부여한다.
select 하여 가장 큰 번호를 얻어오며, ... for update  하여 테이블에 락을 걸고 채번한 번호를 update 한다.

채번하는 메소드는 synchronized 를 걸어 싱글톤으로 구현한다.

* 문제점
synchronized 한 메소드에 접근한 프로세스가 이상종료를 하면 key를 가지고 죽어버리기 때문에
다른 프로세스들이 접근할 수 없다. 이러한 경우는 할 수 없이 was를 restart 하게 된다.
혹은 for update 로 테이블에 락을 걸고 이상종료를 하는 경우에는 DB 테이블에도 락이 걸리므로, 심각한 상황에 처하게 된다.