Я успешно создал службу RMI и клиента. Я могу вызывать методы и так далее. Но теперь я хотел попробовать следующее: я хотел, чтобы стандартный сервис Java, такой как LinkedList, размещался в сервисе.
Кроме того, я хотел «притвориться», что у меня уже есть существующий код, который использует LinkedList. Я хочу получить LinkedList, который фактически управляется службой, но к которому я могу получить доступ локально, точно так же, как это был обычный LinkedList. Кроме того, я хочу сделать минимальное ведение журнала, например, если вызывается .add (), он пишет на сервере: «Добавить вызвано».
Это не для производства, просто чтобы помочь мне понять, как это работает!
Пока я много чего пробовал. Наиболее многообещающим является то, что я создал класс, который расширяет LinkedList и реализует Remote. Этот класс пытается зарегистрироваться в реестре в конструкторе следующим образом:
try {</p>
<p>UnicastRemoteObject.exportObject((Remote)this);
Naming.rebind("theList", (Remote)this);
}
catch (Exception e) {
System.out.println("fail");
System.out.println(e.getMessage());
}
Я должен сделать это, потому что мне нужно расширить LinkedList, поэтому я не могу расширить UnicastRemoteObject.
Вывод, который я получаю при попытке запустить это на стороне сервера:
fail
Connection refused to host: 192.168.178.27; nested exception is:
java.net.ConnectException: Connection refused
А на стороне клиента:
java.lang.ClassCastException: MyList_Stub cannot be cast to java.util.LinkedList
at $Proxy0.createList(Unknown Source)
at RemoteProgram.main(RemoteProgram.java:27)
Заранее спасибо!