「Java 8 API、拡張機能、およびライブラリの開始 - Swing、JavaFX、JavaScript、JDBC、およびネットワークプログラミング」のRMI実装およびRMIに関する章については、oracle tutorialを読んでいます。 API。 "ServerClassまたは別個のImplementationClassのRMIインタフェース実装
リモート・インタフェースの実装は、サーバー・クラスで直接行われますが、本書では、このフォーラムのその他の多くの質問に対して、サーバー・クラスでインスタンス化されるインタフェース用の別個の実装クラスが使用されます。
私の質問の1つは、リモートインターフェイスをサーバークラスに直接実装することをお勧めします。
私の場合、クライアントを介してサーバーを中断して再開できる必要があります。私はそれを行うための両方の方法を実装しており、彼らは仕事をしています。
インタフェース:
public interface MyRemote extends Remote {
boolean isSuspended() throws RemoteException;
void resumeServer() throws RemoteException;
void suspendServer() throws RemoteException, InterruptedException;
}
私はちょうど追加RemoteImplementationクラスでの作業ServerClass
でboolean suspended;
を設定し、サーバーを一時停止するには、私がその変数にアクセスすることはできません。 RemoteImplementationクラスからServerClass.suspendSrv()
のようなServerClassから静的メソッドを呼び出すことができます。
ServerClassにMyRemoteインターフェイスを直接実装すると、実装されたメソッドによって変数に直接アクセスできます。
静的なやり方は、サーバを稼働させなくてもそれらのメソッドを呼び出すことができ、私が今考えることのできない他の問題があるかもしれないので、私は驚いた。
最後に残っているだけで一つの質問があります:
がServerClassに直接MyRemoteインタフェースを実装しないように任意の短所はありますか?
私は本当にあなたのアイデアを感謝します!
私はあなたがこれに応答することを望んでいました:)。あなたが主張するのは、私がずっと考え続けてきたことです。 ServerClassにインターフェイスを直接実装すると、作業が楽になります!乾杯! – motaa