2013-01-25 6 views
0

나는 개조되고/근대화되고있는 프로젝트에서 일하고 있는데 작은 RMI 조각이 포함되어 있으며 불행히도 RMI와는 일 해본 적이 없다.RMI 클라이언트를 중지하려면 어떻게합니까?

내가 알아낼 수없는 한 가지는 처음에 RMI 클라이언트를 만든 후에도 사용자 지정 SocketFactory 생성자를 계속 호출하는 이유입니다. 5 분마다처럼 클라이언트와 서버 사이에 트래픽이없는 경우에도 생성자가 호출된다는 출력을 보게됩니다.

그래서 클라이언트를 끝내거나 어떻게 든 정리하는 방법이 있어야 할 것 같아요.하지만 그 일을 멈추지 만 어떻게 될지 모릅니다. 내가 서버의 방법에 액세스 할 수 있으며 내 클라이언트의 메소드를 호출 할 수 있습니다 그럼

UnicastRemoteObject.exportObject(this); 
TheServer rmiServer = (TheServer)Naming.lookup(s); // where s is some rmi:// url 

:

너무 같은 RMI 연결을 설정합니다.

일단 연결이 완료되면 정리를 위해 스레드를 유지하고 스레드를 중단하려면 어떻게해야합니까?

UnicastRemoteObject를 체크 아웃하고 있었는데, 아마도 unexportObject 메서드를 사용해야합니까?

하지만이 사용자 지정 SocketFactory가 어쨌든 호출되는 이유는 클라이언트 이름에서 클래스 이름을 파생 시켜서 찾은 백그라운드에서 반영하지 않으면 내 프로젝트에서 해당 클래스 이름에 대한 참조가 전혀 없습니다. 뭔가 ...

답변

0

분산 가비지 수집의 효과가 나타납니다. 스텁 작업을 마쳤 으면 모든 로컬 참조를 해제하고 로컬에서 가비지 수집하도록하십시오. 그러면 DGC와 해당 원격 객체에 대한 모든 네트워크 활동도 중지됩니다.

+0

작동하지 않는 것 같습니다. 나는 모든 참조를 nulled하고 나는 여전히 socketfactory 호출을 참조하십시오. – Trant

+0

얼마나 걸립니까? 스텁이 가비지 수집 될 때 중지됩니다. 그리고 당신이 할 수있는 다른 방법은 없습니다. – EJP

관련 문제