我已閱讀關於RMI實現的oracle tutorial以及本書中有關RMI的章節:「開始Java 8 API,擴展和庫 - Swing,JavaFX,JavaScript,JDBC和網絡編程蜜蜂。」ServerClass中的RMI接口實現或單獨ImplementationClass
在oracle教程中,遠程接口的實現直接發生在服務器類中,而在本書以及本論壇中的許多其他問題中,作者使用單獨的實現類來獲取在服務器類中實例化的接口。
我的問題之一是在服務器類中直接實現遠程接口是否是好的做法。
在我的情況下,我必須能夠通過客戶端暫停和恢復服務器。我已經實施了兩種方式來做到這一點,他們的確有用。
接口:
public interface MyRemote extends Remote {
boolean isSuspended() throws RemoteException;
void resumeServer() throws RemoteException;
void suspendServer() throws RemoteException, InterruptedException;
}
暫停我只是在ServerClass
與附加RemoteImplementation類工作設置boolean suspended;
服務器,我不能訪問這個變量。我可以從RemoteImplementation類的ServerClass中調用一個靜態方法,如ServerClass.suspendSrv()
。
當直接在ServerClass中實現MyRemote接口時,我可以直接通過實現的方法訪問變量。
靜態的方式有點讓我感動,因爲我可以調用這些方法,甚至沒有運行服務器,並且可能還有一些我現在無法想到的其他問題。
最後只有一個問題,其餘:
是否有任何缺點,不能直接在ServerClass實現MyRemote接口?
我真的很感激你的想法!
我希望你能迴應這個:)。你聲稱的是我一直在想的。直接在ServerClass中實現接口有利於事情!乾杯! – motaa