У меня есть удаленный объект, открытый через RMI, который я использую для выполнения нескольких действий на ресурсе, который хранится у объекта. Прямо сейчас у меня есть метод для каждой операции, которую мне нужно выполнить.Как создать API для работы с удаленными объектами с помощью java RMI
Пример:
public interface IRobotController {
public int walk(int meters);
public void dance(int seconds);
}
public interface RMIRobotController implements IRobotController, java.rmi.Remote {}
public class RobotController implements RMIRobotController {
private Robot robot;
...
public int walk(int meters) {
return robot.walk(meters);
}
public void dance(int seconds) {
robot.dance(seconds);
}
}
Я хотел бы реорганизовать API так, что я бы только один метод, operate()
. Предположим, что я не хочу возвращать фактическую ссылку на объект робота через RMI, потому что мне иногда приходится выполнять более одной операции и не хочу совершать круговые поездки.
Я придумал это, основываясь на концепции Callable<T>
:
public abstract class RobotCallable<T> {
protected Robot robot;
public void setRobot(Robot robot) {
this.robot = robot;
}
public abstract T call()
}
public class RobotController implements RMIRobotController {
private Robot robot;
...
public T operate(RobotCallable<T> robotCallable) {
robotCallable.setRobot(robot)
return robotCallable.call();
}
}
я это как обычно реализуются эти вещи? Есть ли какой-то механизм для RMI, который делает это автоматически?