자바·JSP
Java Application 중복 실행 방지
미랭군
2012. 9. 25. 20:52
Java Application은 각각 별도의 jvm process로 동작하므로 상호 통신 및 정보를 주고받기에 여러가지 에로사항이 있다. 그로 인해 현재 동일한 프로그램이 실행되고 있는지를 체크하는 방법이 여러가지가 편법(?)으로 사용되고 있는데, 그 중 몇 가지를 나열해 보자면
1. Database Flag 값 변경.
2. 환경설정 파일 변경 혹은 파일 생성 후 락.
3. 임의의 사용하지 않는 port 할당.
우선 2번은
// lock 을 시도합니다.
lock = channel.tryLock();
// lock이 null이라는 것은 다른 JVM에서 이미 파일의 lock을 획득했다는 것입니다. 따라서 채널을 종료하고
// 예외를 발생시켜 runnable의 값을 false로 유지시킵니다.
if (lock == null) {
channel.close();
throw new Exception();
}
이런 식으로 사용이 가능하다.
또 3번은
try {
isRun = new DatagramSocket(1103);
} catch (SocketException e) {
throw new MonitoringException();
}
이런 식으로 사용이 가능하겠다.