Вам не нужно делать свой объект подклассом UnicastRemoteObject.
Возьмите свой класс, определите его для реализации Serializable и вашего интерфейса API RMI, который сам должен реализовать Remote.Ему не нужно создавать подклассы, кроме java.lang.Object.
Когда вы будете готовы к удаленному вызову вашего объекта, вызовите статический метод UnicastRemoteObject.exportObject () для него.С этого момента любая ссылка, которую вы возвращаете через RMI на этот объект, будет вызываться удаленно.
Если вы хотите передать объект другому серверу, вызовите UnicastRemoteObject.unexportObject () для вашего объекта.Затем, когда вы передадите его через вызов RMI, вы передадите сериализованное представление этого объекта.
Недостатком этого является то, что как только вы передадите его, объект на вашем сервере больше не будет принимать вызовы RMI,uninportObject () полностью отключает его как получателя вызова RMI.
Если вы хотите поддерживать объект в качестве цели RMI и одновременно передавать его через RMI в качестве сериализуемого объекта, вам необходимосделайте его сериализуемым и вставьте прокси-объект, который экспортирует интерфейс Remote и который может общаться с неэкспортированным сериализуемым объектом от имени вызывающего.
Когда вы хотите передать базовый объект с сериализацией, вы передаете егонепосредственно.Если вы хотите передать удаленно вызываемую ссылку на него, вы передаете прокси.