powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / RMI передача по ссылке.
25 сообщений из 28, страница 1 из 2
RMI передача по ссылке.
    #38384477
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Возможно ли передать вложенный объект по ссылке?

Сервер:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
public class MyObject {
   public void sayHello(String message){
	System.out.println(message);
   }
}

..............................

public interface ISharedObject extends Remote{
   public MyObject getMyObject() throws RemoteException;
   public void test() throws RemoteException;
}

public class SharedObject implements ISharedObject{
   MyObject myObject = new MyObject();
   
   public void test()  throws RemoteException {
        System.out.println("WORK!");
   }

   public MyObject getMyObject() throws RemoteException {
	return myObject;
   }
}

..................................
Registry registry = LocateRegistry.createRegistry(2099);
Remote stub = UnicastRemoteObject.exportObject(new SharedObject(), 0);
registry.bind("RMI_Server", stub);
..................................



Как на стороне клиента мне получить ссылку на myObject ? Возможно ли это? Или можно получить только ссылку на SharedObject? Заранее огромное спасибо!
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38385155
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никто не поможет?
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38385247
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RMI передает объекты по значению, а для этого требуется сериализация. Добавьте в объявление класса интерфейс Serializable
Код: java
1.
2.
3.
4.
5.
public class MyObject implements Serializable{
   public void sayHello(String message){
	System.out.println(message);
   }
}
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38385325
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanraRMI передает объекты по значению, а для этого требуется сериализация. Добавьте в объявление класса интерфейс Serializable
Код: java
1.
2.
3.
4.
5.
public class MyObject implements Serializable{
   public void sayHello(String message){
	System.out.println(message);
   }
}



Спасибо. Для меня принципиально было знать. Значит RMI мне не подходит. Нужна ссылка!
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38385390
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему MyObject extends Remote не прокатит?
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38385392
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38385766
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПочему MyObject extends Remote не прокатит?
Нет. Не катит :(
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38385769
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПример
http://stackoverflow.com/a/11187584
Как я понял из примера(беглый английский) это невозможно? Получается по ссылке только тот объект который расшарен на сервере. И если я возвращаю в качестве параметра "сложный" объект, то он должен быть сереализуемым и передается таким образом только по значению. Я прав?
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38385774
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelКак я понял из примера(беглый английский) это невозможно?
Вы что-то не то читаете. Там выбраный ответ помечен зеленой галочкой и содержит пример того что вы хотите.
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38385784
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуем документацию. Например:
http://docs.oracle.com/javase/7/docs/platform/rmi/spec/rmi-objmodel7.html

2.6.2 Passing Remote ObjectsWhen passing an exported remote object as a parameter or return value in a remote method call , the stub for that remote object is passed instead. Remote objects that are not exported will not be replaced with a stub instance . A remote object passed as a parameter can only implement remote interfaces.
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38385874
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public interface ISharedObject extends Remote{
	public IMyObject getMyObject() throws RemoteException;
}

public class SharedObject implements ISharedObject{
	MyObject myObject = new MyObject();

	public IMyObject getMyObject() throws RemoteException {
		return myObject;
	}
}

..............................

public interface IMyObject extends Remote {
	public void sayHello(String message);
}

public class MyObject implements IMyObject {
	public void sayHello(String message){
		System.out.println(message);
	}
}



Использование:
Код: java
1.
2.
3.
4.
5.
6.
7.
              try {
			Registry registry = LocateRegistry.getRegistry("localhost", 2099);
			ISharedObject service = (ISharedObject) registry.lookup("RMI_Server");
			service.getMyObject().sayHello("HEY!");
		} catch (Exception e) {
			e.printStackTrace();
		}



Выдает ошибку: java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: MyObject
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38385949
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavel, говорят-же тебе. Поддержи Serializable.
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38385953
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonGorloPavel, говорят-же тебе. Поддержи Serializable.
Тогда будет by value. А задача - by reference.
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38385955
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм...
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38385960
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может поле транзиентным объявить?
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38385964
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде здесь разделе толкуют о сабж. Не?

http://stackoverflow.com/questions/11187548/is-it-possible-to-pass-by-reference-in-rmi
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38385970
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверно поэтому:
Во всех методах java.rmi.Remote интерфейса должно быть явно указано исключение java.rmi.RemoteException
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38385971
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВроде здесь разделе толкуют о сабж. Не?

http://stackoverflow.com/questions/11187548/is-it-possible-to-pass-by-reference-in-rmi
А здесь тогда о чем?
14789266
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38386084
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanraНаверно поэтому:
Во всех методах java.rmi.Remote интерфейса должно быть явно указано исключение java.rmi.RemoteException
Та же ошибка. Короче как я понял это нереально. Жаль.
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38386186
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelivanraНаверно поэтому:
Во всех методах java.rmi.Remote интерфейса должно быть явно указано исключение java.rmi.RemoteException
Та же ошибка. Короче как я понял это нереально. Жаль.
Если поле сделать transient, то оно не будет передаваться на клиента при сериализации. Зато сервер сможет вернуть ссылку на него через удаленный метод внешнего класса.
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38386203
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavel,
может постановка хромает?
Зачем разделяя объекты через протокол, пытаться с ними работать как с единиым целым по ссылкам?
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38386530
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123GorloPavel,
может постановка хромает?
Зачем разделяя объекты через протокол, пытаться с ними работать как с единиым целым по ссылкам?
Да нет у меня другого решения. Приложение специфическое. Либо свой прокол обмена по сокетам(он уже есть) либо RMI... Видимо придется использовать второе.
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38386555
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelПриложение специфическое
угу.
Как всегда - нобелевское решение в архитектуре. Никто до тебя не делал.
ЗЫ.
Что сокеты, что RMI - не надо передавать Объекты и методы. Надо передавать ДАННЫЕ.
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38386575
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123GorloPavel,
может постановка хромает?
Зачем разделяя объекты через протокол, пытаться с ними работать как с единиым целым по ссылкам?
Можно попробовать сериализовывать физ. адрес объекта через RMI
но опять-же. Зачем? Для сравнения?

Может для идентичности ввести суррогатный PK который в рамках решаемой
задачи и будет уникальность обеспечивать.
...
Рейтинг: 0 / 0
RMI передача по ссылке.
    #38386612
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonМожно попробовать сериализовывать физ. адрес объекта через RMI
но опять-же. Зачем? Для сравнения?
прикольно, но очень спорно)
ЗЫ
Мы как-то в EXE, где ещё не было управляемой и перемещаемой памяти, делали такую штуку как передача адреса памяти в виде строки.
Работало)))
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / RMI передача по ссылке.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]