2016-09-19 5 views
0

후 나는 물체과 같이 발행 RMI 서버가 모든 것을 만들었지 만 즉시 종료됩니다. rmi 서버 스레드 종료 (마지막 비 데몬) 때문일 수 있습니다. defaultUncaughtExceptionHandler을 등록했지만 아무것도 기록하지 않습니다. 잠시 후에 나 즉시 종료하지 않고 프로그램을 다시 시작할 수 있습니다.다시 시작 자바 RMI 레지스트리에만 제한

항상 같은 포트를 사용하는 경우 포트가 마지막 사용 후 잠시 차단 될 수 있다는 것을 알고 있기 때문에이 포트는 나를 놀라게 할 것입니다. 그러나 매번 다른 포트 (+100 정도)를 사용하더라도 동작은 동일합니다.

왜 이런 일이 발생하고 그것을 방지하는 방법에 대한 아이디어가 있습니까?

답변

1

createRegistry()의 결과를 정적 변수에 저장해야합니다. 그렇지 않으면 가비지 수집 될 가능성이 있습니다.

+0

논리적으로는 알지만, 서버 종료 여부는 여전히 GC가 있는지 여부에 따라 다릅니다. Java 1.1의 유산이어야합니다. – Harald

+0

'the Java 1.1 heritage'와는 아무런 관련이 없습니다. 객체는 POJO, export 된 원격 객체, RMI 레지스트리, 등등과 같은 가비지 수집 ===을 종료합니다. – EJP

+0

GC로 인한 암시 적 서버 종료가 Java 1.1에서의 아이디어처럼 보입니다. . 그러나 그것은 의도적이지 않을 수도 있습니다. 오늘은 명시 적 종료 방법을 제공한다고 생각 하겠지만, 그 자체로 이미 서버 객체의 사용자에게 참조를 유지하라는 메시지가 표시됩니다. – Harald