2015-01-28 1 views
1

스프링 응용 프로그램에서 "파일 잠금"패턴을 구현할 방법을 찾고 있습니다. 내가 막고 싶은 것은 같은 스프링 애플리케이션의 여러 복사본들이 동시에 같은 리소스 (예 : 데이터베이스)를 사용하기 시작하는 것입니다. 유닉스 시스템에서는 앱이 시작될 때 ".lock"이라는 파일을 생성하는 것이 일반적이며 파일이 이미 존재하는 경우 시작을 거부한다는 것을 알고 있습니다. 이렇게하면 여러 인스턴스가 동일한 서버에서 실행되지 않습니다. 이 패턴을 동일한 데이터베이스에 대해 실행되는 여러 스프링 응용 프로그램의 문제에 적용하는 방법에 대한 아이디어가 있지만 더 일반적이거나 프레임 워크에 내장 된이 문제를 위해 특별히 개발 된 것이 있는지 알고 싶습니다.스프링 응용 프로그램에서 "파일 잠금"패턴을위한 최선의 방법은 무엇입니까?

+1

동일한 데이터베이스에 대해 실행중인 해당 응용 프로그램의 여러 인스턴스가 문제가되는 이유는 무엇입니까? 응용 프로그램이 더 이상 필요하지 않을 때 데이터베이스 연결을 해제해야합니까? –

+0

데이터베이스 연결을 해제하지 않아도됩니다. 문제는 데이터가 일치하지 않거나 손상되는 두 응용 프로그램 컨텍스트에서 동일한 작업이 수행 될 수 있다는 것입니다. 여러 앱 컨텍스트가 문제가 아니지만 범위를 벗어나지 않도록 상황을 설계 할 수 있습니다. – user2193122

답변

0

나는 그런 해결책을 찾고있어 아무 것도 찾지 못했습니다. 구현

  • 검사/시작시 잠금 파일을 만들
  • 는 JVM 종료 후크를 제거, 쉽게해야합니다

JVM이 경우, (그래서이 제거됩니다 심지어 응용 프로그램이 충돌하는 경우) 충돌 (예 : 메모리 부족) 파일이 제거되지 않습니다, 나는 그것을 피할 수있는 방법이 없다고 생각합니다.

관련 문제