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();
}
이런 식으로 사용이 가능하겠다.
'자바·JSP' 카테고리의 다른 글
이클립스 디버깅 시 사선으로 브레이크 포인트 표시되면서 안될 때.. (3) | 2013.04.24 |
---|---|
JAVA에서 HTML 긁어오기 (1) | 2013.01.15 |
[Java] Class.forName(String className) (0) | 2012.09.03 |
콘솔 출력 코드 추적 (0) | 2012.08.29 |
솔라리스에서 64bit JDK설치 (0) | 2012.05.31 |