Да, вы можете. Именно так работают обратные вызовы в случае RMI. Вы отправляете объект на сервер, и когда сервер вызывает метод для вашего объекта, он будет выполняться в «клиентской» JVM, а не на сервере. Изучите метод UnicastRemoteObject.export
для экспорта любого объекта, который реализует интерфейс Remote
как удаленный объект, который можно передать на ваш сервер.
interface UpdateListener extends Remote {
public void handleUpdate(Object update) throws RemoteException;
}
class UpdateListenerImpl implements UpdateListener {
public void handleUpdate(Object update) throws RemoteException {
// do something
}
}
//somewhere in your client code
final UpdateListener listener = new UpdateListenerImpl();
UnicastRemoteObject.export(listener);