2011-09-21 4 views
2

Java-RMI를 사용하여 클라이언트 - 서버 응용 프로그램을 작성 중입니다. 일부 서버 측 자원은 상호 배타적으로 액세스해야합니다 (그 목적으로 잠금을 사용하고 있습니다). 클라이언트는 원격 메소드는 Java의 충돌시 잠금 해제

  • 클라이언트 충돌 원격 메소드 전에 중요 섹션에 대한 잠금을 획득
  • 서버에서 원격 메소드를 호출

    1. :

      는 지금은 때 발생하는 궁금 해서요 임계 영역을 벗어남

    해당 클라이언트와 관련된 원격 메소드 호출에 의해 획득 된 잠금이 해제됩니까? 아니면 다른 클라이언트가 나중에 잠금을 획득하는 것이 불가능할 것입니까?

  • 답변

    4

    귀하의 답변

    덕분에 무슨 일이 중요한 부분을 종료 할 때 원격 방법은 잠금이 완료 될 때까지 실행하고, 릴리스 유지한다는 것이다. 그런 다음 클라이언트에 결과를 반환하려고 시도하고 연결이 끊어져 실패합니다.

    여기에 특별한 위험이 없습니다 ... 물론

    , 서버가 Lock 객체가 아닌 기본 잠금/뮤텍스를 사용하는 경우는, 다음 마지막으로 처리하는 블록 A의 잠금 해제를 할 필요가 예기치 않은 예외로 인해 실패한 경우. 그러나 이것은 다른 문제입니다. 클라이언트가 충돌하면 해당 시나리오가 실행되지 않습니다.

    +0

    +1 : 유일한 단점은 클라이언트가 사라져서 서버가 요청을 일찍 포기하지 않는다는 것입니다. 그것을 보는 또 다른 방법은 서버가 관계없이 똑같이 작동한다는 것입니다. –

    관련 문제