0

RMI を扱っている人なら誰でも、他のクライアント アプリケーションにリモート メソッド呼び出しサービスを提供するオブジェクトへのインターフェイスを簡単に維持する方法について、このジレンマに遭遇したことがあるでしょう。メソッド宣言にマイナーな変更を加えたり、インターフェイスで宣言されたメソッドを追加/削除したりする場合は常に、リモート サーバーから RMI サービスにアクセスするためにそのインターフェイスを使用するすべてのクライアントで変更を手動で複製する必要があります。

4

2 に答える 2

1

クライアントが使用するより安定したインターフェイスを持ち、リモート インターフェイスを使用してジョブを実行する、ダウンロード可能な (シリアル化可能な) エージェントを用意することを考えてみてください。コードベース機能を使用して、すべてのクライアントが確実に利用できるようにすることができます。エージェントにはスタブが含まれている必要があります。エージェントをレジストリにバインドするか、他のリモート メソッドから返すことができます。

または、JWS を使用して新しいバージョンのクライアントを配布します。

または、リモートインターフェイスをより安定して設計して、変更する必要がないようにします-:)

于 2012-07-07T07:47:30.620 に答える
0

私が思いついた良い回避策の1つは、

  1. RMI サーバーによって提供されるすべてのインターフェースを、ビルド時に jar ファイルにパックされる別のプロジェクトに配置します。
  2. 次に、そのjarファイルを依存関係として、またはRMIサービスを提供することを目的としたサーバーアプリケーションのクラスパスに追加するだけでなく、これらのインターフェースを使用してリモートメソッドを呼び出すクライアントアプリケーションにも追加します。

これにより、RMI インターフェースを 1 か所で更新するだけで、RMI インターフェースの保守作業が容易になります。一部のインターフェイスでメソッド シグネチャを変更する余分な作業は、そのメソッドを呼び出すアプリケーション コードの変更に限定されます。

于 2012-07-07T04:48:23.737 に答える