Я пытаюсь создать приложение rmi-iiop (очень простой чат).Мне нужен сервер для связи с клиентом, поэтому я подумал о создании интерфейса подключенного пользователя:
public interface UserInterface extends Remote {
public void receiveMessage(String message) throws RemoteException;
}
Затем на стороне клиента создайте класс User с методами, которые может выполнять сервер ('receiveMessage'):
public class User extends PortableRemoteObject implements UserInterface {
protected User() throws RemoteException {
super();
}
@Override
public void receiveMessage(String message) throws RemoteException {
client.addMessageToGUI();
}
}
Я использую rmic -iiop Chat User
, который генерирует _Chat_Tie.class _ChatInterface_Stub.class _User_Tie.class _UserInterface_Stub.class
После размещения всех файлов на стороне сервера и на стороне клиента и запуска приложения я получаю следующую ошибку: java.rmi.StubNotFoundException: Stub class not found: User_Stub; nested exception is:
Я полагаю, что разница заключается в том, что класс Chat создается на сервере, а затем клиент использует его с использованием интерфейса (который работает нормально), но пользовательский класс должен быть создан на стороне клиента, поэтому клиент работает частично как сервер.
Мой вопрос похож на Java RMI - Создание клиента сервером , но для реализации rmi-ioop.
Иными словами - как я могу отправить ссылку на локальный объектк серверу, чтобы он мог выполнять операции на нем?
Спасибо!Леонтий