1

互換性のある変更と serialVersionUID ( http://docs.oracle.com/javase/6/docs/platform/serialization/spec/version.html#6678 )についてアドバイスが必要です。

私は、RPCを使用して「サーバー」プロジェクトと通信する「クライアント」プロジェクトを持つシステムで作業しています(「サーバー」はDTOクラスを使用してDBからデータをエクスポートし、「クライアント」は同じDTOクラスを使用してそのデータを提示します)。

フィールドが DTO クラスに追加されたとき、チームは serialversionUID を変更しないことを決定したため、「サーバー」の新しいバージョンがデプロイされたときに、「クライアント」をすぐにデプロイする必要はありません。その DTO クラスの古いバージョンは新しいものと互換性があります。

しかし (両方のプロジェクトに数十のシステム インスタンスがあるため)、新しいバージョンの「クライアント」が新しいバージョンの DTO クラスと共にデプロイされ、「サーバー」が何らかの理由で古いバージョンのままである場合、新しいフィールドの DTO クラスが null に解決され、顧客には null として表示されますが、これは正しくない可能性があります。

この問題に対処するためのベスト プラクティスはありますか? DTOクラスのあらゆる種類の変更でUIDを変更できますが、変更が使用されていない場合でも、常に両方のプロジェクトを同時に展開する必要があり、それを回避しようとしています...

4

1 に答える 1